Форум: "Базы";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизПроблема записи в BLOB поле: ORA-01403: no data found Найти похожие ветки
← →
Unk (2004-04-03 19:53) [0]Помогите решить проблему с записью в BLOB, записывая из потока возникает таже проблема
if OpenDialog1.Execute then
begin
OraSQL1.SQL.Text:="UPDATE Blobtest SET file_name = :file_name, binary_file = EMPTY_BLOB() WHERE id = :id RETURNING binary_file INTO :binary_file";
OraSQL1.ParamByName("id").AsInteger:=2;
OraSQL1.ParamByName("file_name").AsString:=ExtractFileName(OpenDialog1.FileName);
//ниже возникает ошибка ORA-01403: no data found
OraSQL1.ParamByName("binary_file").AsBLOBLocator.LoadFromFile(OpenDialog1.FileName);
// так тоже не работает OraSQL1.ParamByName("binary_file").LoadFromFile(OpenDialog1.FileName,ftOraBLOB);
OraSQL1.Execute;
end;
← →
Наталия © (2004-04-04 10:50) [1]Трудно что-либо сказать по данному коду, так как не указаны ни компоненты доступа, ни тип поля в БД...
Могу лишь предложить вариант записи через TMemoryStream - работает без проблем.
MS : TMemoryStream;
...
with QEquipmentUpd do begin
sql.clear;
sql.add("update inv_Equipments set icon_of_eq=:p_icon_of_eq where id=:p_id");
parambyname("p_id").asinteger:=l_id;
ParamByName("p_icon_of_eq").DataType := ftBlob;
ParamByName("p_icon_of_eq").ParamType := ptInput;
ParamByName("p_icon_of_eq").LoadFromStream(MS,ftBLOB);
execsql;
end;
← →
Unk (2004-04-04 12:35) [2]Спасибо. Доступ к базе через ODAC. Я уже локализовал ошибку, необходимо было в строке OraSQL1.ParamByName("binary_file").LoadFromFile(OpenDialog1.FileName,ftOraBLOB);
вместо параметра ftOraBLOB ставить ftBLOB.
Без потока работает тоже прекрасно.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.034 c