Здравствуйте, JMaxus, Вы писали:
JM>В Oracle9 пытаюсь работать с BFILE.
JM>Делаю таблицу с полем такого типа.
JM>create table my_table (bfile_field bfile).... ;
JM>Потом на сервере делаю
JM>create directory test2 as 'c:\oracle\test';
JM>insert into my_table (bfile_field) values (bfilename('test2','c:\1.txt'));
JM>commit;
JM>Все проходит, но в каталоге c:\oracle\test ничего нет, и соответственно при использовании поля bfile_field как LOB объекта возникают ошибки. В чем может быть проблема?
Проблема номер 0: В bfilename имя файла должно быть без пути, т.е. '1.txt', и он уже должен находиться в директории c:\oracle\test на сервере
Проблема номер 1: Когда что-то заключается в кавычки, оно станосится чувствительным к регистру, т.е. первым параметром bfilename будет 'TEST2'
insert into my_table (bfile_field) values (bfilename('TEST2','1.txt'));
После этого — селектом получаем lob locator и подсовываем его в соответствующие процедуры пакета dbms_lob:
declare
lob_loc bfile;
begin
select bfile_field into lob_loc from my_table;
if dbms_lob.fileexists(lob_loc) = 1 then
dbms_output.put_line('File exists');
else
dbms_output.put_line('File does not exist');
end if;
end;
File exists