อย่างที่เราทราบดีว่าเมื่อใดก็ตามที่มีข้อยกเว้นเกิดขึ้นในกระบวนงานที่เก็บไว้ของ MySQL สิ่งสำคัญคือต้องจัดการกับมันด้วยการโยนข้อความแสดงข้อผิดพลาดที่เหมาะสม เพราะหากเราไม่จัดการกับข้อยกเว้น จะมีโอกาสเกิดความล้มเหลวของแอปพลิเคชันด้วยข้อยกเว้นบางประการในกระบวนงานที่เก็บไว้ . MySQL จัดเตรียมตัวจัดการที่ส่งข้อความแสดงข้อผิดพลาดและดำเนินการต่อไป เพื่อแสดงให้เห็น เรากำลังใช้ตัวอย่างต่อไปนี้ซึ่งเรากำลังพยายามแทรกค่าที่ซ้ำกันในคอลัมน์คีย์หลัก
ตัวอย่าง
mysql> DELIMITER // mysql> Create Procedure Insert_Studentdetails(S_Studentid INT, S_StudentName Varchar(20), S_Address Varchar(20)) -> BEGIN -> DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SELECT 'Got an error'; -> INSERT INTO Student_detail -> (Studentid, StudentName, Address) -> Values(S_Studentid,S_StudentName,S_Address); -> Select * from Student_detail; -> END // Query OK, 0 rows affected (0.19 sec)
เรียกใช้ขั้นตอนข้างต้นและจะมีข้อความแสดงข้อผิดพลาด 'ได้รับข้อผิดพลาด' และดำเนินการต่อไปหากเราจะพยายามป้อนค่าที่ซ้ำกันในคอลัมน์ 'studentid'
mysql> Delimiter ; mysql> CALL Insert_Studentdetails(100, 'Gaurav', 'Delhi'); +-----------+-------------+---------+ | Studentid | StudentName | address | +-----------+-------------+---------+ | 100 | Gaurav | Delhi | +-----------+-------------+---------+ 1 row in set (0.11 sec) Query OK, 0 rows affected (0.12 sec) mysql> CALL Insert_Studentdetails(101, 'Raman', 'Shimla'); +-----------+-------------+---------+ | Studentid | StudentName | address | +-----------+-------------+---------+ | 100 | Gaurav | Delhi | | 101 | Raman | Shimla | +-----------+-------------+---------+ 2 rows in set (0.06 sec) Query OK, 0 rows affected (0.12 sec) mysql> CALL Insert_Studentdetails(101, 'Rahul', 'Jaipur'); +--------------+ | Got an error | +--------------+ | Got an error | +--------------+ 1 row in set (0.03 sec) +-----------+-------------+---------+ | Studentid | StudentName | address | +-----------+-------------+---------+ | 100 | Gaurav | Delhi | | 101 | Raman | Shimla | +-----------+-------------+---------+ 2 rows in set (0.04 sec) Query OK, 0 rows affected (0.05 sec) mysql> CALL Insert_Studentdetails(103, 'Rahul', 'Jaipur'); +-----------+-------------+---------+ | Studentid | StudentName | address | +-----------+-------------+---------+ | 100 | Gaurav | Delhi | | 101 | Raman | Shimla | | 103 | Rahul | Jaipur | +-----------+-------------+---------+ 3 rows in set (0.08 sec) Query OK, 0 rows affected (0.10 sec)