เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

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
	___; 
___ ___
แก้ไขและรันโค้ด