THROW โดยไม่ใส่พารามิเตอร์
สมมติว่าต้องการสร้าง stored procedure สำหรับเพิ่มสินค้าใหม่ลงในฐานข้อมูล โดยภายใน stored procedure นั้น ต้องการบันทึกข้อผิดพลาดที่อาจเกิดขึ้นลงในตารางชื่อ errors จากนั้นจึง re-throw ข้อผิดพลาดเดิมออกไป
ควรเขียน stored procedure นี้อย่างไร?
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Transactions and Error Handling in SQL Server
คำแนะนำการฝึกหัด
- ครอบส่วนจัดการข้อผิดพลาดด้วยบล็อก
CATCH - บันทึกข้อผิดพลาดลงในตาราง
errors - ปิดคำสั่ง INSERT ด้วยเครื่องหมายเซมิโคลอน (
;) - Re-throw ข้อผิดพลาดเดิม
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
CREATE PROCEDURE insert_product
@product_name VARCHAR(50),
@stock INT,
@price DECIMAL
AS
BEGIN TRY
INSERT INTO products (product_name, stock, price)
VALUES (@product_name, @stock, @price);
END TRY
-- Set up the CATCH block
___ ___
-- Insert the error and end the statement with a semicolon
___ ___ errors VALUES ('Error inserting a product')___
-- Re-throw the error
___;
___ ___