我一直試圖弄清楚這一點,現在我認爲是時候尋求幫助了。我正在構建一個模式配置腳本,我想添加一些腳本輸出和錯誤處理。這個想法是,腳本輸出窗口只會顯示沒有所有噪音的關鍵信息。Oracle腳本中的錯誤處理
Create Temporary Error Table
Begin Transaction
-- begin work block
Print "Doing some types of work"
-- do work here
If Error and Active Transactions > 0 Then Rollback
If Active Transactions = 0 Then Insert Error In Temp Error Table and Start Another Transaction
-- end work block
-- once all all work complete
If Active Transactions > 0 Then Commit Transactions
在SQL Server的世界,我通常只用Red Gate's SQL Packager做到這一點已經想通了(暗示,暗示紅門 - 我們需要一個Oracle版本:))。關於從哪裏開始獲得類似的東西的任何想法?
_I構建一個架構供應腳本_如果你的意思是你正在創建/改變表等,回滾將無濟於事。在Oracle中,DDL命令提交當前事務(如果有未完成事務),在事務中運行自己並提交成功,則在失敗時進行回滾。因此,在運行DDL命令之後,不會有未完成的事務。唯一的例外是如果存在解析錯誤,那麼數據庫不知道它應該運行DDL命令,並且不會執行第一個隱式提交,也不會爲DDL啓動事務。這與SQL Server非常不同。 – 2010-08-07 04:49:59
我的評論沒有提供答案,只是在那裏指出你可能會或可能沒有意識到的一個陷阱。 – 2010-08-07 04:51:15
@Shannon - 謝謝,這真的很糟糕,你不能做更廣泛的範圍交易,包括DDL。在配置過程中,如果出現問題,將數據庫置於半燒烤狀態,這確實會使錯誤處理變得更加困難。 – 2010-08-09 14:33:39