在 pl/sql 中提取 xmltype

extracting xmltype in pl/sql

我是 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;

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

为什么会这样?提前谢谢你。

我不知道您到底想达到什么目的,但这就是 EXTRACTEXISTSNODE 函数如何用于检索员工编号的数值 - EMPNO

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

Demo