我想知道使用批量收集然后回圈結果和使用游標之間有什么區別。和子問題:是否存在唯一選擇是游標的情況?謝謝
uj5u.com熱心網友回復:
Oracle 隱式優化 PL/SQL for-cursor-loop 以使用 100 行提取,因此它類似于批量收集限制 100。
簡單的例子:
SQL> begin
2 for r in (select/* findme*/ level n from dual connect by level<=100) loop
3 exit;
4 end loop;
5 end;
6 /
PL/SQL procedure successfully completed.
SQL> select fetches, rows_processed,sql_text
2 from v$sql
3 where lower(sql_text) like 'select/* findme*/%';
FETCHES ROWS_PROCESSED SQL_TEXT
---------- -------------- ----------------------------------------------------------
1 100 SELECT/* findme*/ LEVEL N FROM DUAL CONNECT BY LEVEL<=100
1 row selected.
plsql_optmize_level注意:只有當引數>=2(默認值=2)時,這種優化才有效。在plsql_optmize_level< 2 的情況下,for 回圈獲取 1 行。您可以嘗試更改它并檢查差異。
PS。 你不能在動態 sql 中使用游標 for 回圈
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/469009.html
上一篇:使用jQuery替換元素
