oracle – 从XMLTABLE获取时,在此SELECT语句错误中需要INTO子句

前端之家收集整理的这篇文章主要介绍了oracle – 从XMLTABLE获取时,在此SELECT语句错误中需要INTO子句前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图运行一个涉及xmltable的脚本,我得到了一个

PLS-00428: an INTO clause is expected in this SELECT statement

我怎么能纠正我的脚本并从xml中获取2行?

Oracle 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;

解决方法

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;

别担心,我们都会犯下愚蠢的错误,我尽管经验丰富.

猜你在找的Oracle相关文章