打造你自己的 TRY..CATCH
修改 dbo.cuspRideSummaryDelete,刻意加入一個錯誤,好讓我們觀察 TRY、CATCH 區塊的運作方式。
本練習屬於課程
在 SQL Server 中撰寫函式與預存程序
練習說明
- 錯誤地把
@DateParm指定為nvarchar(30)型別,而不是date。 - 加入
@Error作為可選的OUTPUT參數。 - 將
DELETE陳述式放在BEGIN TRY...END TRY區塊中。 - 在
BEGIN CATCH...END CATCH區塊中,串接ERROR_NUMBER()、ERROR_SEVERITY()、ERROR_STATE()、ERROR_MESSAGE()、ERROR_LINE(),並以SET指派給@Error。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
-- Alter the stored procedure
CREATE OR ALTER PROCEDURE dbo.cuspRideSummaryDelete
-- (Incorrectly) specify @DateParm
___ ___(30),
-- Specify @Error
___ nvarchar(max) = NULL OUTPUT
AS
SET NOCOUNT ON
BEGIN
-- Start of the TRY block
___ ___
-- Delete
DELETE FROM RideSummary
WHERE Date = @DateParm
-- End of the TRY block
___ ___
-- Start of the CATCH block
___ ___
SET @Error =
'Error_Number: '+ CAST(___() AS VARCHAR) +
'Error_Severity: '+ CAST(___() AS VARCHAR) +
'Error_State: ' + CAST(___() AS VARCHAR) +
'Error_Message: ' + ___() +
'Error_Line: ' + CAST(___() AS VARCHAR)
-- End of the CATCH block
___ ___
END;