2

問題: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;

ポインタに感謝します。

4

1 に答える 1

0

実行の間にテーブルを削除して再作成していますか? ロングショットですが、これは手順を無効にします。

于 2014-02-18T12:06:12.020 に答える