Oracle 存储过程 解析xml

Oracle 存储过程 解析xml

mark下……


DECLARE
--定义xml 串
  s_xmlstr VARCHAR2(420) := '<input>
                                <start>201701</start>
                                <end>201705</end>                                    
                                <code>1324123412431</code>                                                                    
                            </input>';
PROCEDURE p(
    prm_integer PLS_INTEGER
    )AS
BEGIN
  dbms_output.put_line(prm_integer);
END p;

--解析xml 的存储过程
PROCEDURE xml_parse_service(
    prm_in_inputdate IN VARCHAR2 --  入参: xml串
  )AS
  -- 变量定义
  s_result    VARCHAR2(500);
  s_code    VARCHAR2(500);
  s_start VARCHAR2(6);
  s_end   VARCHAR2(6);
BEGIN
  BEGIN
    SELECT extractvalue(VALUE(t), '/input/code'),
      extractvalue(VALUE(t), '/input/start'),
      extractvalue(VALUE(t), '/input/end')
    INTO s_code,
      s_start,
      s_end
    FROM TABLE(xmlsequence(extract(xmltype(prm_in_inputdate), '/input'))) t;
  EXCEPTION
  WHEN OTHERS THEN
    s_result := '解析输入参数出错,错误原因[' || SQLERRM || ']!';
    RETURN;
  END;
  DBMS_OUTPUT.PUT_LINE('s_code :' ||s_code);
  DBMS_OUTPUT.PUT_LINE('s_start :'||s_start);
  DBMS_OUTPUT.PUT_LINE('s_end :'||s_end);
END xml_parse_service;

BEGIN
  p(213);

  --存储过程调用
  xml_parse_service(s_xmlstr);
END; 

我个人觉得这种隐含代码块用来学习还是不错的。
xmltype: 转成一个 xml对象。

数据库解析xml,这样方便多了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值