參考:
http://technet.microsoft.com/zh-tw/library/ms179296(v=sql.105).aspx
目的:
當處理交易內的資料發生錯誤,整批回復到交易之前的狀態
範例:
CREATE TABLE TEMP_TABLE
(
ID int not null,
Name nvarchar(20) null
)
INSERT INTO TEMP_TABLE VALUES('2','BBB')
BEGIN TRY
BEGIN TRAN
DELETE TEMP_TABLE
INSERT INTO TEMP_TABLE VALUES('1','AAA')
INSERT INTO TEMP_TABLE VALUES('A','CCC')
COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
SELECT ERROR_NUMBER() AS ErrorNumber,ERROR_SEVERITY() AS ErrorSeverity,ERROR_STATE() AS ErrorState,ERROR_PROCEDURE() AS ErrorProcedure,ERROR_LINE() AS ErrorLine,ERROR_MESSAGE() AS ErrorMessage
END CATCH
SELECT * FROM TEMP_TABLE
DROP TABLE TEMP_TABLE
解說:
在資料表TEMP_TABLE中,先新增一筆(2,BBB)的資料。開始進行Try Catch流程,先刪除TEMP_TABLE中的資料,再新增兩筆(1,AAA),(A,CCC),第二筆資料因為資料格式錯誤會發生錯誤訊息,因此跳進Catch流程,先Rollback處理交易的狀態,再顯示錯誤的相關資訊。
錯誤訊息資訊:
ERROR_NUMBER :發生錯誤的錯誤代碼
ERROR_MESSAGE :發生錯誤的錯誤訊息
ERROR_SEVERITY :發生錯誤的錯誤層級
ERROR_STATE :發生錯誤的錯誤狀態
ERROR_PROCEDURE :發生錯誤的程序名稱
ERROR_LINE :發生錯誤的行數
備註:
測試@Temp_Table不適用,資料還是會先被刪除,並且加入(1,AAA)此筆資料。
留言列表