Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SQLDeveloper从XML的重复标记中提取值_Sql_Xml_Oracle Sqldeveloper - Fatal编程技术网

如何使用SQLDeveloper从XML的重复标记中提取值

如何使用SQLDeveloper从XML的重复标记中提取值,sql,xml,oracle-sqldeveloper,Sql,Xml,Oracle Sqldeveloper,我想从oracle表的XML列中提取标记的值。 但是在我的XML中,标记是两倍的,并且它总是具有相同的值 我使用以下查询获得输出: select extractvalue(extract(xmltype(body),'//CallID'),'//CallID') from table123; 但我得到错误“ExtractValue只返回一个节点的值” 如何在pl/sql developer中获取CallID标记的值 <Update Destination="ABC" CreatedBy=

我想从oracle表的XML列中提取
标记的值。 但是在我的XML中,标记
是两倍的,并且它总是具有相同的值

我使用以下查询获得输出:

select extractvalue(extract(xmltype(body),'//CallID'),'//CallID')
from table123;
但我得到错误“ExtractValue只返回一个节点的值”

如何在pl/sql developer中获取CallID标记的值

<Update Destination="ABC" CreatedBy="NETWORK">
    <Assignment>
        <Comment/>
        <Engineers>
            <Value Key="0">
                <Engineer>
                    <ID>123</ID>
                    <Team>
                        <Name>12345</Name>
                    </Team>
                </Engineer>
            </Value>
        </Engineers>
        <Finish>2014-11-07 09:35:00</Finish>
        <Key>123456</Key>
        <Location/>
        <Revision>3</Revision>
        <Stamp>
            <CreatedBy>Customer</CreatedBy>
            <CreatingProcess>0</CreatingProcess>
            <ModifiedBy>NETWORK</ModifiedBy>
            <ModifyingProcess>632753</ModifyingProcess>
            <TimeCreated>2014-11-03 13:24:14</TimeCreated>
            <TimeModified>2014-11-06 12:49:14</TimeModified>
        </Stamp>
        <Start>2014-11-07 07:45:00</Start>
        <Task>
            <CallID>977277212</CallID>
            <ModifiedByTorUser/>
        </Task>
    </Assignment>
    <PrevAssignment>
        <Assignment>
            <Comment/>
            <Engineers>
                <Value Key="0">
                    <Engineer>
                        <ID>123</ID>
                        <Team>
                            <Name>12345</Name>
                        </Team>
                    </Engineer>
                </Value>
            </Engineers>
            <Finish>2014-11-07 09:50:00</Finish>
            <Key>123456</Key>
            <Location/>
            <Revision>3</Revision>
            <Stamp>
                <CreatedBy>Customer</CreatedBy>
                <CreatingProcess>0</CreatingProcess>
                <ModifiedBy>NETWORK</ModifiedBy>
                <ModifyingProcess>632753</ModifyingProcess>
                <TimeCreated>2014-11-03 13:24:14</TimeCreated>
                <TimeModified>2014-11-06 12:49:14</TimeModified>
            </Stamp>
            <Start>2014-11-07 08:00:00</Start>
            <Task>
                <CallID>977277212</CallID>
                <ModifiedByTorUser/>
                <Number>0</Number>
                <SlaStatus>0</SlaStatus>
            </Task>
        </Assignment>
    </PrevAssignment>
</Update>

123
12345
2014-11-07 09:35:00
123456
3.
顾客
0
网络
632753
2014-11-03 13:24:14
2014-11-06 12:49:14
2014-11-07 07:45:00
977277212
123
12345
2014-11-07 09:50:00
123456
3.
顾客
0
网络
632753
2014-11-03 13:24:14
2014-11-06 12:49:14
2014-11-07 08:00:00
977277212
0
0

示例XML中有2个
元素。如果只需要其中一个,请尝试
//CallID[1]
//CallID[2]
。(免责声明:我不是oracle专家,甚至不是它的常规用户)感谢har07的建议,我使用下面的查询来获得所需的结果:从table123中选择extractvalue(extract(xmltype(body),“//CallID[1]”,“//CallID[2]”);事实上,我一直在寻找一个查询来获取“CallID”值,而不管XML中是否出现调用。上述查询不适用于XML中的单个查询。