Одна из особенностей работы с BLOB в более ранних версиях Oracle заключалась в том, что мы не могли включить полный BLOB в оператор insert
. Это должен был быть двухэтапный процесс.
Ключевым является ограничение в 4000 байт, поскольку эта цифра является верхней границей того, что Oracle считает типом данных SQL. Таким образом, Oracle может обрабатывать большие объекты размером 4000 байт или меньше без рывка, но создает исключение ORA-01460, если мы просим его принять больший большой объект. Обходной путь должен был вставить строку с заполнителем empty_blob()
, а затем обновить новую строку.
insert into t42 (id, blob_col) values (1, empty_blob());
update t42
set blob_col = some_blob_variable
where id = 1;
Это может быть причиной вашей проблемы; Трудно сказать, не видя весь ваш код.
NB. Насколько я могу судить, предыдущее не относится к Oracle 11g: теперь мы можем легко вставлять строки, содержащие большие BLOB-объекты.