--创建带有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天,您在需要使用的时候【私信】联系我,我会为您补发。