Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.14;
Скачать: CL | DM;

Вниз

Вставка файла в поле LOB Oracle   Найти похожие ветки 

 
RealGanj   (2006-03-18 18:03) [0]

На сервере есть таблица с полем BLOB. Нужно с рабочей станции в столбец  BLOB вставить текст файла, например C:\Temp\Temp.rft.  Как его потом считать?


 
Desdechado ©   (2006-03-18 19:42) [1]

Query1.Sql.Text :=
  "INSERT INTO testblob " +
  " ( " +
  "  fBlob" +
  " )" +
  " VALUES" +
  " (" +
  " :ParamBlobField" +
  ")";
Query1.ParamByName("ParamBlobField").DataType := ftBlob;
Query1.ParamByName("ParamBlobField").ParamType := ptInput;
Query1.ParamByName("ParamBlobField").LoadFromFile("MyFile",ftBlob);
Query1.ExecSql;

Считать - наоборот


 
Reindeer Moss Eater ©   (2006-03-18 19:47) [2]

Не все так просто.


 
Desdechado ©   (2006-03-18 20:38) [3]

> Не все так просто.
мы не ищем легких путей?


 
RealGanj   (2006-03-18 21:21) [4]


> Query1.Sql.Text :=
>   "INSERT INTO testblob " +
>   " ( " +
>   "  fBlob" +
>   " )" +
>   " VALUES" +
>   " (" +
>   " :ParamBlobField" +
>   ")";
> Query1.ParamByName("ParamBlobField").DataType := ftBlob;
>
> Query1.ParamByName("ParamBlobField").ParamType := ptInput;
>
> Query1.ParamByName("ParamBlobField").LoadFromFile("MyFile",
> ftBlob);
> Query1.ExecSql;


Код работает только для маленьких файлов. Мне нужно большие.


 
Desdechado ©   (2006-03-18 22:09) [5]

маленькие-большие - граница "нерабочести" какая?
если БДЕ, смотри настройки драйвера


 
RealGanj   (2006-03-20 14:13) [6]

Робочий код (працює з файлами будь-яких розмірів):
На сервері Oracle прописується така процедура:
CREATE OR REPLACE PROCEDURE BlobTableUpdate (p_Id NUMBER, p_Name VARCHAR2,
                          p_Value out  BLOB)
is
begin
 UPDATE BlobTable
 SET
   Name = p_Name,
   Value = EMPTY_BLOB()
 WHERE
   Id = p_Id
 RETURNING
   Value
 INTO
   p_Value;
end;
В Delphi або С++Builder:
StoredProc1->StoredProcName = "BlobTableUpdate";
StoredProc1->Prepare();
StoredProc1->ParamByName("p_Id")->AsInteger = 0;
StoredProc1->ParamByName("p_Name")->AsString = Name;
StoredProc1->ParamByName("p_Value")->ParamType = ptInput;
StoredProc1->ParamByName("p_Value")->AsBLOBLocator->LoadFromFile("c:\\D02_747.RTF");
StoredProc1->Execute();


 
ANB ©   (2006-03-20 14:18) [7]


> RealGanj   (20.03.06 14:13) [6]

Официальный язык русский. Переведи и запости еще раз, так как этот пост сейчас удалят.


 
ANB ©   (2006-03-20 14:20) [8]

Как считать :
1) select Value from BlobTable where ID = :ID.
Потом вытащить блоб из поля стримом.
Для конкретного совета нужно знать, какими компонентами стучишься к ораклу.


 
Sergey13 ©   (2006-03-20 14:24) [9]

StoredProc1->ParamByName("p_Value")->ParamType = ptInput;



Страницы: 1 вся ветка

Текущий архив: 2006.05.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.038 c
2-1146147814
vishnia
2006-04-27 18:23
2006.05.14
Поле типа AUTOINCREMENT в Interbase


15-1145188119
Tirael
2006-04-16 15:48
2006.05.14
вход


2-1146000528
Krants
2006-04-26 01:28
2006.05.14
ТМемо.Lines


3-1142792342
Serg1981
2006-03-19 21:19
2006.05.14
Поиск дублей


3-1142876148
RealGanj
2006-03-20 20:35
2006.05.14
Даты в Oracle