plsql - 从 PL/SQL 中的 XMLType 而不是表中提取 CLOB 中的节点值
问题描述
假设我将以下 XML 数据分配给 CLOB 类型的 PL/SQL 中的局部变量,即:
l_clob := ‘<xml>
<ticket_order>
<table_no>1<table_no/>
<waiter>Jack<waiter/>
<total_people>12<total_people/>
</ticket_order>
<ticket_order>
<table_no>4<table_no/>
<waiter>Jackie<waiter/>
<total_people>3<total_people/>
</ticket_order>
<ticket_order>
<table_no>2<table_no/>
<waiter>Sally<waiter/>
<total_people>2<total_people/>
</ticket_order>
<ticket_order>
<table_no>11<table_no/>
<waiter>Mike<waiter/>
<total_people>6<total_people/>
</ticket_order>
</xml>';
因此,我不会将此 XML 存储在表列中,因为我想单独在我的 PL/SQL 包过程中进行处理。
使用上面的l_clob
变量,我然后执行以下操作:
retrieve_all_table_no(p_response => SYS.XMLTYPE.CREATEXML(l_clob));
现在在我的程序中:
retrieve_all_table_no(p_response in XMLType)
如何逐行提取其中的所有节点值<table_no>
?
同样,这不是来自表,而是在 PL/SQL 中动态完成的。
我希望能够访问每个单独的值,以便我处理,即:
1
4
2
11
我不能使用提取,因为这将连接所有值。
解决方案
解决了这个问题,我在添加到我的程序时会改变它,但这达到了我想要的结果。
l_xmlType XMLTYPE;
l_xmltype := SYS.XMLTYPE.CREATEXML(l_clob); -- l_clob value from above
select x.*
from xmltable('xml/ticket_order'
passing l_xmltype
columns table_no number path 'table_no'
) x;
推荐阅读
- javascript - 如何访问要从中提取数据的网站的控制台?
- reporting - 在 BlueSky Statistics 中,如何删除输出窗口中的分析?
- c# - Unity:发布请求无法连接到目标主机
- excel - 在 lineChart excel 图中添加和查看 dataLabels (CTDLbls)
- teradata - Teradata:连续季度排名。
- python - 需要python中这个字符串的正则表达式吗?
- json - 可以/应该在带引号的json中传递布尔值吗?
- javascript - “in”运算符在 IE11 中无法按预期使用日期字符串
- javascript - 如何使用 httpPost() 函数从 p5.js JavaScript 库发布 xml 数据(例如 xml 文件)?
- java-8 - 如何转换列表
进入地图 >