Oracle 从XMLTABLE提取时,此SELECT语句错误中应包含INTO子句

Oracle 从XMLTABLE提取时,此SELECT语句错误中应包含INTO子句,oracle,plsql,oracle11g,Oracle,Plsql,Oracle11g,我试图运行一个包含xmltable的脚本,我得到了一个 PLS-00428:此SELECT语句中应包含INTO子句 如何更正脚本并从xml中获取2行 甲骨文11g DECLARE xml_char xmltype; BEGIN xml_char := xmltype.createXML('<xml><ROWSET><ROW UNIQUEID="All0" ALLOWCHG="0"/><ROW UNIQUEID="All1" ALLOWCHG="1"/&g

我试图运行一个包含xmltable的脚本,我得到了一个

PLS-00428:此SELECT语句中应包含INTO子句

如何更正脚本并从xml中获取2行

甲骨文11g

DECLARE xml_char xmltype;
BEGIN
xml_char := xmltype.createXML('<xml><ROWSET><ROW UNIQUEID="All0" ALLOWCHG="0"/><ROW UNIQUEID="All1" ALLOWCHG="1"/></ROWSET></xml>');
select UNIQUEID, ALLOWCHG from xmltable ( '/xml/ROWSET/ROW' passing xml_char columns "UNIQUEID" varchar(30) path '@UNIQUEID', "ALLOWCHG" varchar(30) path '@ALLOWCHG' ) ;
END;
声明xml\u char xmltype;
开始
xml_char:=xmltype.createXML(“”);
从xmltable中选择UNIQUEID,ALLOWCHG(“/xml/ROWSET/ROW”传递xml_char列“UNIQUEID”varchar(30)路径“@UNIQUEID”,“ALLOWCHG”varchar(30)路径“@ALLOWCHG”);
结束;

在SQL中,select语句从不包含INTO子句

在PL/SQL中,select语句需要INTO子句,除非它位于游标中。我修改了您的代码以使用光标:

DECLARE 
xml_char xmltype;

cursor c_cursor is
select UNIQUEID, ALLOWCHG 
from xmltable ( '/xml/ROWSET/ROW' 
                passing xml_char 
                columns 
                    "UNIQUEID" varchar(30) path '@UNIQUEID',
                    "ALLOWCHG" varchar(30) path '@ALLOWCHG'
              );

BEGIN

xml_char := xmltype.createXML('<xml><ROWSET><ROW UNIQUEID="All0" ALLOWCHG="0"/><ROW UNIQUEID="All1" ALLOWCHG="1"/></ROWSET></xml>');

for i in c_cursor loop  
  dbms_output.put_line('UNIQUEID: ' || i.uniqueid || ' ALLOWCHG: '|| i.allowchg);
end loop;

END;
声明
xml_char xmltype;
光标c_光标为
选择UNIQUEID,ALLOWCHG
从xmltable(“/xml/ROWSET/ROW”
传递xml_字符
柱
“UNIQUEID”varchar(30)路径“@UNIQUEID”,
“ALLOWCHG”varchar(30)路径“@ALLOWCHG”
);
开始
xml_char:=xmltype.createXML(“”);
对于c_游标循环中的i
dbms|u输出.put_行('UNIQUEID:'|| i.UNIQUEID | |'ALLOWCHG:'| i.ALLOWCHG);
端环;
结束;

别担心,我们都会犯愚蠢的错误,伙计,尽管我有多年的经验。

这是一个微不足道的语法问题。将自己描述为“noob”并不能免除您阅读Oracle文档的义务。好的,但为什么要求将这些字段(UNIQUEID、ALLOWCHG)放入变量中呢?因为Oracle Pl/SQL要求我们选择放入变量中。确实如此。你必须选择变量,因为你为什么还要选择其他变量?如果你不打算用它做任何事情,那么选择它是毫无意义的。