gpt4 book ai didi

oracle - oracle中格式化xmltype的数据

转载 作者:行者123 更新时间:2023-12-04 04:46:59 24 4
gpt4 key购买 nike

我对 oracle 中的 XML 很陌生,我有一个非常简单的要求。

我有一个返回 XMLTYPE 数据的函数
例如

<ROWSET>
<ROW>
<RCODE>FIRST CHECK DATA</RCODE>
</ROW>
<ROW>
<RCODE>SECOND CHECK DATA</RCODE>
</ROW>
<ROW>
<RCODE>THIRD CHECK DATA</RCODE>
</ROW>
</ROWSET>

我想避开所有标签并以正常方式显示数据。
我试过
DECLARE
l_xmltype XMLTYPE;
l_var VARCHAR2(1000);

BEGIN
l_xmltype := getdata(849,20130804);

l_var := l_xmltype.extract('*/ROW/RCODE/text()').getstringval();
END;

OUTPUT:

FIRST CHECK DATASECOND CHECK DATAJOHNSON KOUL

我想显示与
FIRST CHECK DATA

SECOND CHECK DATA

THIRD CHECK DATA

如何在行之间换行或添加空格。

我不想将数据保存在任何表中。

最佳答案

作为方法之一,您可以使用 XMLSequence()函数,返回顶级节点的集合,然后应用 extractvalue()获取实际节点值。作为另一种方法,最好的方法(从 oracle 11gr2 开始,XMLSequence() 已被弃用),您可以使用 XMLTable()功能:

这是一个简单的函数,它返回 XMLType 的数据数据类型:

SQL> create or replace function GetXML return xmltype
2 is
3 begin
4 return xmltype('<ROWSET>
5 <ROW>
6 <RCODE>FIRST CHECK DATA</RCODE>
7 </ROW>
8 <ROW>
9 <RCODE>SECOND CHECK DATA</RCODE>
10 </ROW>
11 <ROW>
12 <RCODE>THIRD CHECK DATA</RCODE>
13 </ROW>
14 </ROWSET>');
15 end;
16 /

Function created
  • 使用 XMLSequence()
    select extractvalue(column_value, '/RCODE') as rcode
    from table(
    xmlsequence(
    extract(getxml, '/ROWSET/ROW/RCODE')
    )
    )

    结果:
    RCODE
    --------------------
    FIRST CHECK DATA
    SECOND CHECK DATA
    THIRD CHECK DATA
  • 使用 XMLTable()
    select Rcode
    from xmltable('/ROWSET/ROW/RCODE'
    passing getxml columns Rcode varchar2(21) path '/RCODE')

    结果:
     RCODE
    ---------------------
    FIRST CHECK DATA
    SECOND CHECK DATA
    THIRD CHECK DATA
  • 关于oracle - oracle中格式化xmltype的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18036380/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com