实现您自己的 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;