oracle xmltable 序列,ORACLE xml解析 xmltable和XMLSEQUENCE解析xml

DECLARE

--xml字符串

v_query VARCHAR2(2000) := '-1SELECT TEST_TB_HXQ.ID FROM TEST_TB_HXQ,USERS a2,C_STOREGRADE a1,TEST_DET a0 WHERE ( (TEST_TB_HXQ.AD_CLIENT_ID=37) ) AND (a0.ID (+)=TEST_TB_HXQ.DBUSER) AND (a1.ID (+)=TEST_TB_HXQ.C_STOREGRADE_ID) AND (a2.ID (+)=TEST_TB_HXQ.MODIFIERID)

394036374138';

--定义记录xml变量

TYPE xml_record_type IS RECORD(

id     NUMBER(10),

iquery VARCHAR2(2000),

itable NUMBER(10));

TYPE xml_table_type IS TABLE OF xml_record_type;

xml_table xml_table_type;

--xml类型

v_xml xmltype;

--批量接受secction

TYPE selection_table_type IS TABLE OF VARCHAR2(100);

selection_table selection_table_type;

BEGIN

v_xml := xmltype(v_query);

dbms_output.put_line(CHR(13)||'---------------第一种xmltable解析xml方法---------------');

--查询xml内容

SELECT * BULK COLLECT

INTO xml_table

FROM xmltable('/data' passing v_xml columns id NUMBER(10) path 'id',

iquery VARCHAR2(2000) path 'query',

itable NUMBER(10) path 'table');

--遍历xml数据

FOR temp IN xml_table.first .. xml_table.last

LOOP

dbms_output.put_line('>>    id: '||xml_table(temp).id || '   >> itable: '||xml_table(temp).itable);

dbms_output.put_line('>>   iquery  '||xml_table(temp).iquery );

END LOOP;

dbms_output.put_line(CHR(13)||CHR(13)||'---------------第二种XMLSEQUENCE解析xml方法---------------'||CHR(13));

--获取重复的selection标签

SELECT extractvalue(VALUE(t), '/selection') BULK COLLECT

INTO selection_table

FROM TABLE(XMLSEQUENCE(EXTRACT(v_xml, '/data/selection'))) t;

--遍历xml数据

FOR temp IN selection_table.first .. selection_table.last

LOOP

dbms_output.put_line('>>   selection  '||selection_table(temp));

END LOOP;

END;

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值