問題:SPから結果を取得するには、毎回再コンパイルする必要があります。
SPの目的:テーブルの各行からXMLを構築すること。
説明:コンパイル後に初めてSPを実行した後、テーブルに有効な行がある場合でも、再コンパイルしない限り、SPはデータを返しません。
私のコードの概要は..
qry := 'select * from mytable where flag2 = 0 and flag1 = 1';
qContext := DBMS_XMLGEN.newContext(qry);
DBMS_XMLGEN.setrowtag(qContext, 'RowFromDB');
DBMS_XMLGEN.setrowsettag(qContext, 'RowTag');
dbms_xmlgen.setmaxrows(qContext, 1);
retXML := '';
loop
tmprowxml := DBMS_XMLGEN.getxml(qContext);
exit when dbms_xmlgen.getnumrowsprocessed(qContext) = 0;
tmprowxml := replace(tmprowxml, '<?xml version="1.0"?>');
retXML := retXML || tmprowxml;
// code to update flag2 to 1
end loop;
DBMS_XMLGEN.closecontext(qcontext);
COMMIT;
return retXML;
ポインタに感謝します。