私は0行以上を返すselect文を持っています。oracle plsqlは行をチャンクします
私はカーソルを使ってxml出力を生成するplsql procを考え出しています。すべての行は一度に100行に戻されます。私は必要に応じて一度にLOOの行をチャンクするためにこれをやっています。
だから、基本的に私のプログラムは、私は、XMLテキストに、SELECT文からの出力を変換やろうとしているロジック
cursor c1 is select id,code_id,code_desc from table order by id; --returns some rows
if c1%notfound
then return;` -- exit from procedure
else
loop
grab first 100 rows from select and append to a variable
and assign it to a variable;
update this variable into a clob field in a table.
grab next 100 rows and append into a variable
update this variable into a clob field in a table in another row;see below
table data
and so on
and grab remaining rows and append into a variable
print the variable;
until no data found;
exit
の下に従ってください。
出力は以下のようになります。
TABLE:STG_XML_DATA
LOOP_NO(NUMBER), XML_TEXT(CLOB), ROWS_PROCESSED
1 <XML><id>1</ID><id>2</ID>..<ID>100</ID></XML> 100
2 <XML><id>101</ID><id>102</ID>..<ID>200</ID></XML> 200
3 <XML><id>301</ID><id>102</ID>..<ID>320</ID></XML> 20
は誰かが、すべての
は、なぜあなたは一度のみのプロセスに100行をしようとしていますか?あなたの行がどのように見えるのか、あるいは「変数に追加する」のように見えますか?たとえば、PL/SQLコレクションに行を格納することはできますが、実際に行を印刷するのは簡単です。 – kfinity
私は一度に100行をチャンクして、それをテーブルに格納できる変数に追加しようとしています。私はパターンに従ったXMLテキストを生成しています。このselect文から返された値は、その値をclob_columnに追加するために使用されます。 – user1751356
ここでは、カーソルの操作に関するいくつかの有益な情報、特に検索したい行を制限する方法と、最後に到達したときを正しく知る方法について説明します(NOTFOUNDを使用するのではなく)。http:// www。 oracle.com/technetwork/issue-archive/2008/08-mar/o28plsql-095155.html –