Метод в вашем классе имеет такую подпись:
public static void copy(int ident, String path)
Но в вашей хранимой процедуре Java вы указали эту подпись:
'CopyBLOB.copy(java.lang.String, java.lang.String)'
Я думаю, если вы измените первый аргумент на java,lang.Integer
, ваша проблема должна разрешиться сама собой. Вам, вероятно, следует также изменить тип данных параметра ID в процедуре IMAGE_ADDER ().
редактировать
«Есть идеи, как загрузить локальные файлы?»
Недаром база данных может взаимодействовать только с файлами, которые видны ее серверу. Обычно это ограничивает файлы и каталоги, которые физически находятся в одном и том же блоке, если только сетевой администратор не подключил некоторые удаленные диски.
Передача файлов с локального диска ПК на сервер на самом деле является клиентом, т. Е. Проблемой приложения, это не та вещь, с которой база данных должна действительно вмешиваться.
Я знаю, что это не то, что вы надеялись услышать. Если вы действительно хотите управлять загрузкой файлов из базы данных, то механизм остается неизменным, когда мы хотим передавать файлы по сети: FTP. Тим Холл опубликовал реализацию PL / SQL для FTP на своем сайте Oracle-Base. Узнать больше .
", если файл меньше, чем 2000B
(WTF?) "
Это подозрительно близко к пределу BINARY CHAR (2000). В более старых версиях Oracle нам приходилось использовать двухэтапный процесс: вставить заполнитель, а затем выпустить обновление. Примерно так:
procedure add_image( id numeric(10), pic blob)
AS
BEGIN
insert into pictures
values (seq_pic.nextval, id, empty_blob());
update pictures
set col_pic = pic
where id = seq_pic.currval;
END add_image;