![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вставка файла в поле LOB Oracle [D6]
RealGanj © (2006-03-18 18:03:00)На сервере есть таблица с полем BLOB. Нужно с рабочей станции в столбец BLOB вставить текст файла, например C:\Temp\Temp.rft. Как его потом считать?
Sergey13 (2006-03-20 14:24:00) [1]StoredProc1->ParamByName("p_Value")->ParamType = ptInput;
ANB (2006-03-20 14:20:00) [2]Как считать :
1) select Value from BlobTable where ID = :ID.
Потом вытащить блоб из поля стримом.
Для конкретного совета нужно знать, какими компонентами стучишься к ораклу.
ANB (2006-03-20 14:18:00) [3]
> RealGanj (20.03.06 14:13) [6]
Официальный язык русский. Переведи и запости еще раз, так как этот пост сейчас удалят.
RealGanj (2006-03-20 14:13:00) [4]Робочий код (працює з файлами будь-яких розмірів):
На сервері 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();
Desdechado (2006-03-18 22:09:00) [5]маленькие-большие - граница "нерабочести" какая?
если БДЕ, смотри настройки драйвера
RealGanj (2006-03-18 21:21:00) [6]
> 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 20:38:00) [7]> Не все так просто.
мы не ищем легких путей?
Reindeer Moss Eater (2006-03-18 19:47:00) [8]Не все так просто.
Desdechado (2006-03-18 19:42:00) [9]
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;
Считать - наоборот