我有一個select語句返回0或更多行。oracle plsql分塊行
我想用一個遊標想出一個plsql proc來產生xml輸出,所有行一次返回100行。我這樣做是爲了根據需求在一段時間內分塊排列。
所以基本上我的程序應遵循以下邏輯
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
我試圖做的SELECT語句的輸出轉換成XML文本。
輸出應該類似於下面:
表: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 –