Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เราจะเขียนตัวจัดการ MySQL ในโพรซีเดอร์ที่เก็บไว้ซึ่งแสดงข้อความแสดงข้อผิดพลาดและออกจากการดำเนินการได้อย่างไร


อย่างที่เราทราบดีว่าเมื่อใดก็ตามที่มีข้อยกเว้นเกิดขึ้นในกระบวนงานที่เก็บไว้ของ MySQL สิ่งสำคัญคือต้องจัดการกับมันด้วยการโยนข้อความแสดงข้อผิดพลาดที่เหมาะสม เพราะหากเราไม่จัดการกับข้อยกเว้น จะมีโอกาสเกิดความล้มเหลวของแอปพลิเคชันด้วยข้อยกเว้นบางประการในกระบวนงานที่เก็บไว้ . MySQL จัดเตรียมตัวจัดการที่ส่งข้อความแสดงข้อผิดพลาดและออกจากการดำเนินการ เพื่อแสดงให้เห็น เรากำลังใช้ตัวอย่างต่อไปนี้ซึ่งเรากำลังพยายามแทรกค่าที่ซ้ำกันในคอลัมน์คีย์หลัก

ตัวอย่าง

mysql> Delimiter //
mysql> Create Procedure Insert_Studentdetails3(S_Studentid INT, S_StudentName Varchar(20), S_Address Varchar(20))
    -> BEGIN
    -> DECLARE EXIT 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.00 sec)

mysql> Delimiter ;
mysql> CALL Insert_Studentdetails3(105, 'Mohan', 'Chandigarh');
+-----------+-------------+------------+
| Studentid | StudentName | address    |
+-----------+-------------+------------+
|       100 | Gaurav      | Delhi      |
|       101 | Raman       | Shimla     |
|       103 | Rahul       | Jaipur     |
|       104 | Ram         | Chandigarh |
|       105 | Mohan       | Chandigarh |
+-----------+-------------+------------+
5 rows in set (0.04 sec)
Query OK, 0 rows affected (0.06 sec)

ตอนนี้ หากเราจะพยายามเพิ่มค่าที่ซ้ำกันของคอลัมน์ 'studentid' คอลัมน์นั้นจะออกจากการดำเนินการ มันไม่ได้ให้ชุดผลลัพธ์ของแบบสอบถามที่เขียนในขั้นตอน 'select * from student_detail' และให้เฉพาะข้อความแสดงข้อผิดพลาด 'got ผิดพลาด'.

mysql> CALL Insert_Studentdetails3(105, 'Sohan', 'Bhopal');
+--------------+
| Got an error |
+--------------+
| Got an error |
+--------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)