3

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

1 に答える 1

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;

心配しないでください、私たちは皆愚かな間違いを犯します。長年の経験にもかかわらず、私は間違いを犯します。

于 2013-02-27T02:39:00.450 に答える