หลายๆคน อาจรู้จักคำสั่ง Try … Catch ในภาษาอื่นๆมาบ้าง
วันนี้ลองมาดู Try … Catch ใน SQL SERVER (Transact-SQL) กัน
เพราะงานบางครั้งจำเป็นจะต้องมีการตรวจสอบการทำงานของคำสั่งว่าถูกต้องหรือไม่
หรือเมื่อมีความผิดพลาดเกิดขึ้นกับการทำงานของคำสั่ง
จะทำอย่างไรต่อไป
บทความนี้จะเสนอแนวทางว่าถ้าเรานำมาช่วยในการตรวจสอบความผิดพลาด
ในกรณีการทำงานกับ ข้อมูล Transaction นั้น
สามารถทำได้อย่างไร >>>
Red Code = คำสั่งเพิ่มเติมที่ใช้ดึงค่าการทำงานของ TRANSACTION
ขณะนั้น
Blue Bold Code = คำสั่ง Try …
Catch ในบทความนี้
Light Green Code = Comment
หรือคำอธิบายคำสั่ง – ขั้นตอนนั้นๆ
เพื่อความเข้าใจมากขึ้น
**********************************************************************
ตัวอย่างคำสั่ง :::
--สร้างตารางข้อมูลชั่วคราวขึ้นมาเพื่อใช้ทำการทดสอบ
Create table #TTB_Test (ProductID varchar(20));
insert into #TTB_Test values ('777');
insert into #TTB_Test Values ('888');
select ProductID from #TTB_Test ; --ข้อมูลทีได้ก่อนเริ่มทดสอบ
BEGIN TRANSACTION;
BEGIN TRY
-- ลบข้อมูลที่ไม่มีอยู่จริง (ต้องการทำให้ Error เพื่อตรวจสอบการทำงานของ Catch)
DELETE FROM
Production.Product
WHERE
ProductID = 980/0;
END TRY
BEGIN CATCH
SELECT
--ทำการ Select ERROR
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
IF @@TRANCOUNT
> 0 --เช็ค
ถ้ามีการพบ TRANSACTION ใน Catch
(มี Errorเกิดขึ้น)
ROLLBACK TRANSACTION; -- ยกเลิกและคืนค่าการทำงานกับ TRANSACTION นี้ซะ
END CATCH;
IF @@TRANCOUNT
> 0 --เช็ค
ถ้ามีการพบ TRANSACTION ปกติ
ก็ให้ยืนยันการทำรายการ
COMMIT
TRANSACTION;
select ProductID from
#TTB_Test; --ข้อมูลทีได้หลังเริ่มทดสอบ
drop table #TTB_Test; --ลบตารางข้อมูลชั่วคราวที่ใช้ทดสอบ
GO
ความคิดเห็น
แสดงความคิดเห็น