4
A
回答
2
我相信它會一直存在直到你的會話消失或關閉它。
您可以通過關閉它,當你用它做;-)
嚴重的是,依靠一些設置來關閉遊標你只是隱藏的問題並促進惰性編程配置光標的壽命。它也可能對合法需要保持光標更長時間打開的任何過程產生不利影響。
3
除了DCookie的回答是:
光標壽命的一般模式是
OPEN
BIND
EXECUTE
FETCH...FETCH...FETCH
BIND
EXECUTE
FETCH...FETCH...FETCH
...
CLOSE
即光標可以重新使用新鮮的變量結合到它並再執行它。
在會話級別,PL/SQL還將維護cache of cursors,以避免重新打開最近關閉的遊標的開銷。所以一個你編程關閉的遊標可能仍然是打開的。 Oracle會在適當的時候在幕後關閉它們。
如果光標超出範圍,則可以關閉它。也就是說,如果一個電話或程序是這樣的:
DECLARE
CURSOR c_1 IS SELECT ....;
BEGIN
OPEN c_1;
FETCH c_1 INTO...;
END;
那麼,一旦執行完畢,C_1超出範圍(而不能物理再次調用),並可以關閉。這對異常處理特別有用,因爲可能會引發異常,跳出該過程並繞過所有'CLOSE c_1';'碼。通過關閉超出範圍的遊標,您不必擔心添加異常處理代碼來執行此操作。
如果你的遊標有一個會話範圍(例如,在PL/SQL包規範或主體的全局級定義或通過引用遊標返回給客戶端),它永遠不會以這種方式超出範圍,所以永遠不會會自動關閉,直到會話斷開或通過DBMS_SESSION.MODIFY_PACKAGE_STATE(DBMS_SESSION.FREE_ALL_RESOURCES);
相關問題
- 1. Oracle遊標
- 2. Oracle存儲過程 - 從打開遊標的過程中返回遊標
- 3. Oracle遊標問題
- 4. 加入oracle遊標
- 5. Oracle嵌套遊標
- 6. 控制Oracle遊標
- 7. 存儲卡遊戲的座標生成
- 8. 追加到oracle中的遊標
- 9. 使用jdbc解釋oracle中的遊標
- 10. 計算oracle遊標中的記錄數
- 11. Oracle中的遊標for循環
- 12. 如何從oracle中的存儲過程調用遊標
- 13. Oracle遊標和JDBC ODBC
- 14. 檢索Oracle遊標與JDBC
- 15. Oracle ODP.NET遊標泄漏?
- 16. PLSQL Oracle遊標程序
- 17. Java不釋放oracle遊標
- 18. 概括Oracle靜態遊標
- 19. Ref遊標類型oracle
- 20. 轉換T-SQL遊標到Oracle光標:FETCH_STATUS等同於Oracle遊標
- 21. 的Oracle SQL遊標for循環檢查日期和賦值
- 22. oracle顯式遊標使用的實際生活示例
- 23. 使用Access 2003從存儲過程中檢索Oracle遊標
- 24. 在sys_refcursor中使用oracle遊標
- 25. Oracle 11g:在過程中使用遊標
- 26. 在oracle中打開遊標後提交
- 27. 在Oracle中迭代通過遊標
- 28. Oracle pl/sql參考(返回?)遊標/聲明的遊標
- 29. Oracle遊標與SQL Server光標
- 30. 在Oracle 10中隱式或顯式關閉存儲過程中的遊標?存儲在Oracle 10.2
+1好信息,謝謝加里。 – DCookie 2010-06-08 14:38:56