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,这样方便多了。