2012-07-09 66 views
1

我在Oracle數據庫中有一個存儲過程。
在這個存儲過程中,我定義了一個遊標。在遊標中定義的查詢執行多少次?

我遍歷結果設置使用:

FOR item IN cursor_name LOOP 
END LOOP; 

多少次查詢的執行呢?有什麼方法讓我知道?也是最好的方法,還是應該以不同的方式迭代?

謝謝。

+1

看看這個「AskTom」http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1203923200346667188 – 2012-07-09 08:23:58

+0

閱讀這也是:http:// www.oracle.com/technetwork/issue-archive/2008/08-nov/o68plsql-088608.html – 2012-07-09 08:35:14

回答

4

光標cursor_name中的查詢只執行一次。您從該光標獲取多少次取決於。每個提取意味着一個上下文切換。從Oracle 10版開始,如果將參數PLSQL_OPTIMIZE_LEVEL設置爲缺省值2或更高,則優化會啓動,並且您將一次獲取100行。沒有這個,你會分別獲取每一行。在獲取很多行時,這會嚴重影響性能。

另外要注意的是,你不要把SQL語句放在循環中。當你這樣做時,你顯然會執行這些語句的次數與從你的遊標中獲取的行數一樣多。

Regards,
Rob。

+0

非常感謝。我現在要試試這個。 – ionutab 2012-07-09 10:00:47