TRY..CATCH ของคุณเอง
แก้ไข dbo.cuspRideSummaryDelete โดยเพิ่มข้อผิดพลาดโดยตั้งใจ เพื่อดูว่าบล็อก TRY CATCH ทำงานอย่างไร
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การเขียนฟังก์ชันและ Stored Procedures ใน SQL Server
คำแนะนำการฝึกหัด
- กำหนดชนิดข้อมูลให้
@DateParmเป็นnvarchar(30)แทนที่จะเป็นdate(โดยตั้งใจให้ผิด) - เพิ่ม
@Errorเป็นพารามิเตอร์OUTPUTแบบเลือกใช้ได้ - วางคำสั่ง
DELETEไว้ภายในบล็อกBEGIN TRY...END TRY - เชื่อมต่อ
ERROR_NUMBER(),ERROR_SEVERITY(),ERROR_STATE(),ERROR_MESSAGE(),ERROR_LINE()ภายในบล็อกBEGIN CATCH...END CATCHแล้ว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;