在pl / sql中提取xmltype

问题描述 投票:1回答:1

我是pl / sql的新手,并开始使用xmltype我在https://docs.oracle.com/cd/B10501_01/appdev.920/a96616/arxml24.htm上按照这个例子

看起来像这样

CREATE TABLE Xml_tab ( xmlval xmltype);

INSERT INTO Xml_tab VALUES (
xmltype('<?xml version="1.0"?>
           <EMP>
              <EMPNO>221</EMPNO>
              <ENAME>John</ENAME>
           </EMP>'));

INSERT INTO Xml_tab VALUES (
xmltype('<?xml version="1.0"?>
           <PO>
              <PONO>331</PONO>
              <PONAME>PO_1</PONAME>
           </PO>'));

-- now extract the numerical values for the employee numbers

SELECT e.xmlval.extract('//EMPNO/text()').getNumVal() as empno
    FROM Xml_tab 
    WHERE e.xmlval.existsnode('/EMP/EMPNO')  = 1;

当我能够创建表并将行插入其中时。但是当我尝试运行最后一个程序时,我得到了ORA-22950: cannot ORDER objects without MAP or ORDER method

为什么会这样?先感谢您。

oracle plsql xmltype
1个回答
1
投票

我不知道你究竟想要实现什么,但这是如何使用EXTRACTEXISTSNODE函数来检索员工数字的数值 - EMPNO

SELECT extract(xmlval,'/EMP/EMPNO/text()').getNumberVal() as empno
    FROM Xml_tab WHERE
    existsnode(xmlval,'/EMP/EMPNO')  = 1 ;

Demo

© www.soinside.com 2019 - 2024. All rights reserved.