我正在尝试运行一个涉及xmltable的脚本,而我正在获取
PLS-00428:此SELECT语句中需要一个INTO子句
如何更正我的脚本并从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;
答案 0 :(得分:12)
在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;
别担心,我们都会犯下愚蠢的错误,尽管我有多年的经验。