oracle数据库里使用临时表导入XML数据时报错

--创建带有xmltype数据类型的表

CREATE TABLE Xmltable (XH CHAR(20) NOT NULL PRIMARY KEY, LXFS sys.XMLType); /*声明LXFS字段用sys.xmltype*/ 

--导入XML数据 --

第一种方式:使用insert语句
 

INSERT into XMLTABLE values('22201',sys.XMLType.createXML('<联系方式 姓名 = "张月"> <email>ZY@interher.net</email>

<电话>158042711251</电话> 

<地址> 

<邮政编码>130000</邮政编码> 

<省或直辖市>吉林省</省或直辖市>

<市或县>长春市</市或县>

<详细地址>南关区亚泰大街233号</详细地址> 

</地址>

</联系方式>')) 

--第二种方式:使用临时表导入 --首先创建临时表temptable,表中有一个clob类型(clob:文本型数据类型,可变长度,最大数据量4GB)的字段

create table temptable(XH CHAR(6),tempxml clob); 

--编写一个PL/SQL程序段,将22203.xml文件(与第一种方式里的文档内容是一致的)中的XML数据插入到临时表中:

DECLARE
  F_LOB bfile;
  C_LOB clob;
  ln number;
  src_offset number := 1;
  des_offset number := 1;
  csid number := 850;
  lc number := 0;
  warning number;
BEGIN
  INSERT INTO temptable VALUES('22203',empty_clob());/*插入空的clob*/
  SELECT tempxml INTO C_LOB FROM temptable WHERE XH = '22203';/*读取对象到c_LOB中*/
  --F_LOB:=BFILENAME('mydir',FILENAME)
  ln:= dbms_lob.getlength(F_LOB);/*获取文件的长度*/
  dbms_lob.fileopen(F_LOB,dbms_lob.file_readonly);/*以只读的方式打开文件*/
  dbms_lob.loadclobfromfile(C_LOB,F_LOB,ln,des_offset,src_offset,csid,lc,warning);/*传递对象*/
  dbms_lob.fileclose(F_LOB);/*关闭原始文件*/
  COMMIT;
END;

执行第二种方式里的PL/SQL程序段时报错,报错提示如下

DECLARE

*

ERROR at line 23:

ORA-06502: PL/SQL: 数字或值错误 : invalid LOB locator specified: ORA-22275

ORA-06512: 在 "SYS.DBMS_LOB", line 805

ORA-06512: 在 line 15 

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。