Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / insert blob Oracle + ADO / 14 сообщений из 14, страница 1 из 1
11.05.2017, 10:55
    #39451180
Polaris2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert blob Oracle + ADO
Друзья, очень нужна помощь. В проекте необходимо реализовать запись больших файлов в blob. С interbase проблем нет. С маленькими файлами - тоже. Но большие...
Вопрос в интернете уже поднимался, но... не работает. Записывать нужно не с помощью ХП, а своим insertом. Делаю примерно так:
Код: plaintext
1.
2.
3.
4.
5.
ADOQuery->SQL->text = "insert into table1 (key, file) values (key_gen.nextval,  empty_blob()) returning file into :file";
ADOQuery->Parameters->ParamByName(file)->DataType = ftBlob;
ADOQuery->Parameters->ParamByName(file)->Direction = pdInput;
ADOQuery->Parameters->ParamByName(file)->LoadFromFile(Path, ftBlob);
ADOQuery->ExecSQL();


Ошибка: ORA-00439: не задействована функциональная возможность: Returning clause from this client type.
Обычный insert без returninga работает с большими файлами через dbExpress, но нужен обязательно ADO!

P.s. Заранее прошу прощения, если не соблюдены правила оформления или описания проблемы. Пишу первый раз, да ещё и с телефона.
...
Рейтинг: 0 / 0
11.05.2017, 11:15
    #39451208
AnSi_Sr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert blob Oracle + ADO
Polaris2000Обычный insert без returninga работает с большими файлами через dbExpress, но нужен обязательно ADO!

Что этот тезис означает?
...
Рейтинг: 0 / 0
11.05.2017, 11:23
    #39451212
Polaris2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert blob Oracle + ADO
Среда разработки RADStudio2009. Используя палитру dbExpress и запрос вида
Код: plsql
1.
ADOQuery->SQL->text = "insert into table1 (key, file) values (key_gen.nextval,  :file)


файлы записываются.
...
Рейтинг: 0 / 0
11.05.2017, 11:23
    #39451213
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert blob Oracle + ADO
Polaris2000,

Какой смысл создавать параметр ADO с направлением Input, загружать в него данные, чтобы потом вернуть в него же пустой lob из результата запроса?
...
Рейтинг: 0 / 0
11.05.2017, 11:31
    #39451230
Polaris2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert blob Oracle + ADO
Я не специализируюсь на oracle и запросы с returning тоже ранее не использовал. Но все форумы и статьи по данной проблеме сводились к подобной конструкции. Может это и не верное направление, но сделано "по мотивам" других ответов. Но раз не работает, значит смысла действительно не много.
...
Рейтинг: 0 / 0
11.05.2017, 11:53
    #39451250
Polaris2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert blob Oracle + ADO
Если выполнить код
Код: plaintext
1.
2.
3.
ADOQuery->SQL->text = "insert into table1 (key, file) values (key_gen.nextval, :file)";
ADOQuery->Parameters->ParamByName(file)->LoadFromFile(Path, ftBlob);
ADOQuery->ExecSQL();


с маленькими файлами - все отлично, с большими - "ORA-01460: затребовано не реализованное или не разумное преобразование".
...
Рейтинг: 0 / 0
11.05.2017, 11:57
    #39451256
AnSi_Sr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert blob Oracle + ADO
Polaris2000Но все форумы и статьи по данной проблеме сводились к подобной конструкции.
В тех статьях и форумах речь идет о том, что в старых версиях oracle генерируется ошибка "ORA-00439: feature not enabled" при использовании insert с returning_clause (появилось в более поздних версиях), а также, что для некоторых компонентов/oledb-провайдеров некорректно определяется версия клиента/сервера, что также приводит к генерации подобной ошибки.

А в чем исходный вопрос?
...
Рейтинг: 0 / 0
11.05.2017, 12:02
    #39451261
Polaris2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert blob Oracle + ADO
Вопрос: как в Oracle11 записать данные в blob, если их размер ~десятки МБ. Использовать обязательно ADO.
...
Рейтинг: 0 / 0
11.05.2017, 12:42
    #39451301
AnSi_Sr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert blob Oracle + ADO
строка для поиска в гугле: attempting to pass a string to a bind variable value in excess of 4000 bytes can result in an ORA-01460
например, обновить odp.net
...
Рейтинг: 0 / 0
11.05.2017, 13:11
    #39451327
Polaris2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert blob Oracle + ADO
AnSi_Sr,

Правильно ли я понял по указанным вами ссылкам, что проблема либо в структуре БД (у меня нельзя менять, да и через другие компоненты работает), либо в драйвере и его надо обновить. Но ADOConnection предлагает 2 драйвера: Oracle provider for OLE DB и Microsoft OLE DB Provider for oracle. Какой бы я не выбрал, подключение нормальное, а ошибки на больших файлах одинаковые. Значит дело не в драйвере. Или вывод неверный?
...
Рейтинг: 0 / 0
11.05.2017, 13:26
    #39451331
ma1tus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert blob Oracle + ADO
Polaris2000Oracle provider for OLE DB 1707697
...
Рейтинг: 0 / 0
11.05.2017, 13:55
    #39451359
Polaris2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert blob Oracle + ADO
ma1tus,

Сделал как Lazy cat. При выполнении selecta - ошибка (Тип данных не поддерживается), если в запросе поле blob.
...
Рейтинг: 0 / 0
11.05.2017, 14:16
    #39451374
ma1tus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert blob Oracle + ADO
Polaris2000Тип данных не поддерживаетсяобоими провайдерами?
...
Рейтинг: 0 / 0
11.05.2017, 19:09
    #39451601
Polaris2000
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert blob Oracle + ADO
Добрался до другого компьютера, ошибка только с Microsoft OLE DB Provider. Или версия другая или установлен криво. С Oracle provider for OLE DB заработало:
Код: plaintext
1.
ADOQuery->SQL->text = "insert into table1 (key, file) values (key_gen.nextval,  :file)


Всем спасибо за ответы.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / insert blob Oracle + ADO / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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