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

การใช้ฟังก์ชันข้อผิดพลาดใน TRY...CATCH แบบซ้อนกัน

มีจักรยานไฟฟ้ารุ่นใหม่เข้ามาในร้าน จึงต้องอัปเดตสต็อกสินค้า

ต้องการบันทึกว่าได้รับจักรยาน Trek Powerfly 5 - 2018 จำนวน 2 คัน ราคาคันละ $3499.99 และจักรยาน New Power K- 2018 จำนวน 3 คัน ราคาคันละ $1999.99

ลองเพิ่มสินค้าเหล่านี้ลงในฐานข้อมูลเนื่องจากคิดว่าเป็นรุ่นใหม่ทั้งหมด แต่ลืมไปว่ามีรุ่นแรกอยู่ในสต็อกแล้ว โชคดีที่ตาราง products มี constraint กำหนดให้ชื่อสินค้าทุกรายการต้องไม่ซ้ำกัน

จึงเตรียม script สำหรับควบคุมข้อผิดพลาดที่อาจเกิดขึ้นระหว่างการแทรกข้อมูล พร้อมทั้งต้องการบันทึกข้อผิดพลาดลงในตารางชื่อ errors และหากการบันทึกข้อผิดพลาดนั้นล้มเหลว ให้แสดงหมายเลขข้อผิดพลาดและข้อความข้อผิดพลาดออกมา

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Transactions and Error Handling in SQL Server

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ครอบส่วนจัดการข้อผิดพลาดด้วยบล็อก CATCH
  • แทรก 'Error inserting a product' ลงในตาราง errors และครอบการแทรกข้อมูลนี้ด้วยบล็อก TRY อีกชั้นหนึ่ง
  • ครอบส่วนจัดการข้อผิดพลาดแบบซ้อนกันด้วยบล็อก CATCH อีกชั้นหนึ่ง
  • เลือกดึงบรรทัดข้อผิดพลาดและข้อความข้อผิดพลาดภายในบล็อก CATCH ชั้นใน

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

BEGIN TRY
    INSERT INTO products (product_name, stock, price) 
    VALUES	('Trek Powerfly 5 - 2018', 2, 3499.99),   		
    		('New Power K- 2018', 3, 1999.99)		
END TRY
-- Set up the outer CATCH block
___ ___
	SELECT 'An error occurred inserting the product!';
    -- Set up the inner TRY block
    ___ ___
    	-- Insert the error
    	INSERT INTO ___ 
        	VALUES ('Error inserting a product');
    ___ ___    
    -- Set up the inner CATCH block
    ___ ___
    	-- Show number and message error
    	SELECT 
        	___ AS line,	   
			___ AS message; 
    ___ ___    
___ ___
แก้ไขและรันโค้ด