Я создал форму с «элементом просмотра» и тем файлом, который я выбираю, используя этот элемент, я сохраняю его в каталоге моей операционной системы.
, но я не могу получитьтот же файл в моем классическом отчете.
вот процедура, которую я использую, чтобы записать загруженный элемент в файловую систему os.
создать или заменить процедуру write_to_file (
p_file_name invarchar2
, p_directory в varchar2
, p_content в blob
) равно
l_file utl_file.file_type;
l_buffer raw(32000);
l_amount binary_integer := 32000;
l_pos integer := 1;
l_blob blob;
l_blob_left number;
l_blob_length number;
begin
l_blob_length: = dbms_lob.getlength (p_content);
l_blob_left: = l_blob_length;
- открыть файл назначения.
l_file: = utl_file.fopen (p_directory, p_file_name, 'WB',32760);
- прочитать фрагменты большого двоичного объекта и записать их в файл
- до завершения.
- если достаточно мало для одной записи
если l_blob_length <32760, то </p>
utl_file.put_raw (l_file, p_content);
utl_file.fflush (l_file);
else - писать по частям
l_pos: = 1;
, в то время как l_pos
loop
dbms_lob.read (p_content, l_amount, l_pos, l_buffer);
utl_file.put_raw (l_file, l_buffer);
utl_file.fflush (l_file);
- установить начальную позицию для следующего среза
l_pos: = l_pos + l_amount;
- установить конечную позицию, если меньше 32000 байт
l_blob_left: = l_blob_left- l_amount;
если l_blob_left <32000, то </p>
l_amount := l_blob_left;
end if;
end loop;
end if;; 1069 *
utl_file.fclose (l_file);
исключение
когда другие, тогда
- закрыть файл, если что-то пойдет не так.
если utl_file.is_open (l_file) затем
utl_file.fclose (l_file);
end if;
повышение;
end;
может кто-нибудь помочьмне восстановить тот же файл в моем отчете Apex?