การเรียกใช้ stored procedure ที่ throw ข้อผิดพลาด
สมมติว่าต้องการบันทึกการรับจักรยาน Trek Conduit+ จำนวน 3 คัน ราคาคันละ $499.99
เนื่องจากคิดว่า Trek Conduit+ ยังไม่มีในตาราง products จึงพยายามเพิ่มเป็นสินค้าใหม่ โดยใช้ stored procedure ที่สร้างไว้ในแบบฝึกหัดก่อนหน้า:
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
BEGIN CATCH
INSERT INTO errors VALUES ('Error inserting a product');
THROW;
END CATCH
ต้องดักจับข้อผิดพลาดที่อาจเกิดขึ้นระหว่างการเรียกใช้ stored procedure พร้อมแสดงข้อความผิดพลาดต้นฉบับ
จะเขียนสคริปต์อย่างไร?
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Transactions and Error Handling in SQL Server
คำแนะนำการฝึกหัด
- เรียกใช้ stored procedure ชื่อ
insert_product - กำหนดค่าที่เหมาะสมให้กับพารามิเตอร์ของ stored procedure
- ครอบส่วนจัดการข้อผิดพลาดด้วยบล็อก
CATCH - Select ข้อความผิดพลาด
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
BEGIN TRY
-- Execute the stored procedure
EXEC ___
-- Set the values for the parameters
@product_name = 'Trek Conduit+',
@stock = ___,
@price = ___;
END TRY
-- Set up the CATCH block
___ ___
-- Select the error message
SELECT ___;
___ ___