Plsql 为什么dbms_lob.fragment_insert在我的脚本中不起作用?

Plsql 为什么dbms_lob.fragment_insert在我的脚本中不起作用?,plsql,Plsql,具有blob列的简单表 create table table01 ( myCode VARCHAR2(10), myValue blob ); insert into table01(myCode, myValue) values('abc', hextoraw('414243')); 我正在尝试使用dbms\u lob.fragment\u insert修改blob值 declare l_b BLOB; begin SELECT myValue INTO l_b

具有blob列的简单表

create table table01 (
  myCode  VARCHAR2(10),
  myValue blob
);

insert into table01(myCode, myValue) values('abc', hextoraw('414243'));
我正在尝试使用dbms\u lob.fragment\u insert修改blob值

declare
  l_b BLOB;
begin
  SELECT myValue
  INTO l_b
  FROM table01
  WHERE myCode = 'abc'
  FOR UPDATE;

  dbms_lob.fragment_insert(l_b, 3, 1+dbms_lob.getlength(l_b), hextoraw('787878'));
end;
/
我看到的例外如下

declare
ERROR at line 1:
ORA-43856: Unsupported LOB type for SECUREFILE LOB operation
ORA-06512: at "SYS.DBMS_LOB", line 1159
ORA-06512: at line 10  
43856. 0000 -  "Unsupported LOB type for SECUREFILE LOB operation"
Document: YES
Cause:    A LOB that is not a SECUREFILE was used in a SQL statement or
          in a call where a SECUREFILE LOB was expected.
Action:   Convert the LOB to a SECUREFILE LOB or do not use this keyword
          or call.

我对Oracle DB的了解不足以理解我做错了什么。是否可以按我尝试的方式使用dbms_lob.fragment_insert?

我的问题的答案可能是dbms_lob.fragment_insert不能用于修改未存储为SecureFile的Blob:(

当我以以下方式创建表时

create table table01 (
  myCode  VARCHAR2(10),
  myValue blob
) lob(myValue) store as SECUREFILE;
我的剧本行得通


遗憾的是,我正在搜索pl/sql解决方案,以修改大Blob,而不访问数据库主机文件系统,并将Blob存储为非安全文件。我认为dbms_lob.fragment_insert可能是一个解决方案

可能与“谢谢你链接的问题”重复。它与我的问题联系松散。我自己已经回答了我的问题