是否有一種更簡單的方法來關閉PL/SQL程序(Oracle 10G)中的所有打開的遊標。從pl/sql異常塊中關閉所有遊標'一次'
我有一個程序可以產生一些例外。要正常退出,我需要檢查是否有 任何遊標打開和關閉它們。這是我結束的那種情況。
Procedure test
is
--
---
Begin
--
--
Exception
when no_data_found then
if cursorA%isopen close
if cursorB%isopen close
if cursorC%isopen close
when invalid_date then
if cursorA%isopen close
if cursorB%isopen close
if cursorC%isopen close
when invalid_user then
if cursorA%isopen close
if cursorB%isopen close
if cursorC%isopen close
when others then
if cursorA%isopen close
if cursorB%isopen close
if cursorC%isopen close
End test;
很明顯,以上並不理想,特別是如果有很多異常條款。與其對每個異常塊執行相同的檢查,是否有更快的方法來關閉所有打開的光標?注意:它只需要關閉由當前運行的pl/sql程序打開的遊標,因爲可能還有其他可能會打開遊標的pl/sql程序。
在此先感謝
不太熟悉Oracle異常語法,但是您能否將所有的遊標關閉語句放在一邊測試您正在處理的異常類型? – n8wrl
否,因爲發生異常時,控制權跳轉到相關異常塊的第一行。在某些情況下,我無法控制何時會引發異常。 – ziggy