開始使用免費開始

打造你自己的 TRY..CATCH

修改 dbo.cuspRideSummaryDelete,刻意加入一個錯誤,好讓我們觀察 TRYCATCH 區塊的運作方式。

本練習屬於課程

在 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;
編輯並執行程式碼