powered by simpleCommunicator - 2.0.44     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle 8.1.7 & ADO & Delphi 5
8 сообщений из 8, страница 1 из 1
Oracle 8.1.7 & ADO & Delphi 5
    #32063125
Andy Mezentsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имею такую команду (TADOCommand).

'insert into pictures(ID, Picture) Values(:P0, :P1)'

Вызываю так:
ParamByName('P0').AsInteger := 1;
ParamByName('P0').LoadFromFile('c:\photo.jpg',ftVarBytes);

Execute;

Получаю ошибку: ORA-01036: illegal variable name/number.

И эта ошибка происходит ТОЛЬКО тогда, когда картинка имеет размер больше 4 килобайт.
Тип поля Picture - CLOB.
ЧТО ДЕЛАТЬ? ПОМОГИТЕ!!!
...
Рейтинг: 0 / 0
Oracle 8.1.7 & ADO & Delphi 5
    #32063237
X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
X
Гость
> ParamByName('P0').LoadFromFile('c:\photo.jpg',ftVarBytes);

Может здесь P1 надо?
...
Рейтинг: 0 / 0
Oracle 8.1.7 & ADO & Delphi 5
    #32063240
Ч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ч
Гость
А во-вторых:
Исходя из названия поля PICTURE можно предположить что там будут храниться картинки. Тип поля CLOB предназначен для хранения Character Lagrge OBjects
В вашем случае скорее всего надо использовать BLOB.
...
Рейтинг: 0 / 0
Oracle 8.1.7 & ADO & Delphi 5
    #32063242
Andy Mezentsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>> ParamByName('P0').LoadFromFile('c:\photo.jpg',ftVarBytes);

>Может здесь P1 надо?

Опечатка. В коде, конечно, у меня стоит P1.
...
Рейтинг: 0 / 0
Oracle 8.1.7 & ADO & Delphi 5
    #32063257
X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
X
Гость
Попробуйте сначала вставить строку с ID, а затем послать
update pictures set picture = EMPTY_CLOB() where id = :P0 RETURNING Picture into :P1 ;

ParamByName('P0').AsInteger := 1;
ParamByName('P1').ParamType := ptInput ; //Обязательно

ParamByName('P1').LoadFromFile('c:\photo.jpg',ftVarBytes);
или
ParamByName('P1').AsOraClob.LoadFromFile('c:\photo.jpg',ftVarBytes);
...
Рейтинг: 0 / 0
Oracle 8.1.7 & ADO & Delphi 5
    #32063259
Andy Mezentsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И во вторых: Конечно, же тип данных не CLOB а BLOB.
Так кто-нибдь скажет как мне быть? Я уже устал бороться с этой проблемой. ПОМОГИТЕ!!!!
Или это нерешаемо с ADO? Тогда кто-нибудь скажет, какими компонентами доступа лучше всего пользоваться?
...
Рейтинг: 0 / 0
Oracle 8.1.7 & ADO & Delphi 5
    #32063313
Andy Mezentsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте сначала вставить строку с ID, а затем послать
update pictures set picture = EMPTY_CLOB() where id = :P0 RETURNING Picture into :P1 ;

ParamByName('P0').AsInteger := 1;
ParamByName('P1').ParamType := ptInput ; //Обязательно

ParamByName('P1').LoadFromFile('c:\photo.jpg',ftVarBytes);
или
ParamByName('P1').AsOraClob.LoadFromFile('c:\photo.jpg',ftVarBytes);


Получаю ошибку: ORA-00933: SQL command not properly ended
...
Рейтинг: 0 / 0
Oracle 8.1.7 & ADO & Delphi 5
    #32066662
Stryker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Размер буфера равен 32 Кб это что касается заноса картинки, а когда в процедуре есть параметр типа БЛОБ или КЛОБ возникает ошибка.
1. В параметрах вызываемой процедуры не должно быть таких типов.
Но прежде чем выполнить эту процедуру необходимо
в SQL+ запустить вот такой скриптик:
Create DIRECTORY DOCUMENTS as 'Путь к файлу(ам)';
Create or replace Procedure Add_Text
(Par in Varchar2, Par2 in Varchar2)
is
Text CLOB;
Path_File BFILE;
id_document NUMBER;
File_Len Binary_Integer;
DIRECTY_FILE VARCHAR2(30) := 'DOCUMENTS';

begin
Path_File := BFILENAME(DIRECTY_FILE, Path);
if DBMS_LOB.FILEEXISTS(Path_File) = 1 then
File_Len := DBMS_LOB.GETLENGTH(Path_File);
DBMS_LOB.FILEOPEN(Path_file,DBMS_LOB.LOB_READONLY);
Insert into Table1(Par1,Par2,EMPTY_CLOB) RETURNING Name_Field_CLOB INTO Text;
DBMS_LOB.LOADFROMFILE(Text, Path_File,File_Len);
end;

ЕСЛИ КТО ЗНАЕТ КАК ЕГО ОТ ТУДА ДОСТАТЬ! ПОДЕЛИТЕСЬ ПЛИЗ!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle 8.1.7 & ADO & Delphi 5
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]