实现限制:'FILE READONLY'不能直接访问远程包变量或游标

Implementation restriction:'FILE READONLY' Can not directly access remote package variable or cursor

我正在尝试使用 form 6i 将 pdf 文件插入到 oracle 数据库中。这是我写的代码。

DECLARE
l_blob  BLOB;
l_bfile BFILE := BFILENAME ('D:\pdf\', 'a.pdf');
begin
insert into demo values (1, EMPTY_BLOB())
returning theblob into l_blob;
dbms_lob.fileopen (l_bfile)
dbms_lob.loadfromfile (l_blob, l_bfile, dbms_lob.getlength (l_bfile));
dbms_lob.fileclose (l_bfile);
END;

当我在 Toad 9.0.1.8 中执行这些代码时,它们运行良好。在 oracle form 6i 中使用它时显示错误,

Implementation restriction:'FILE READONLY' Can not directly access remote package variable or cursor

终于解决了这个问题,但不是通过 forms 6i。在后端创建一个 procedure 并在 forms 6i 中调用它。就是这样!这是将我的 pdf 文件保存到 BLOB 列的过程.....

create or replace procedure save_blob
as
  l_blob  BLOB;
  l_bfile BFILE := BFILENAME ('MY_PDF', 'a.pdf');
begin
  insert into demo values (4, EMPTY_BLOB())
  returning theblob into l_blob;
  dbms_lob.fileopen (l_bfile);
  dbms_lob.loadfromfile (l_blob, l_bfile, dbms_lob.getlength (l_bfile));
  dbms_lob.fileclose (l_bfile);
 COMMIT;
end;

'MY_PDF '是命令创建的目录

   CREATE OR REPLACE DIRECTORY my_pdf AS 'D:\pdf\';