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

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


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

ตัวอย่าง

mysql> Delimiter //
mysql> Create Procedure Insert_Studentdetails4(S_Studentid INT, S_StudentName Varchar(20), S_Address Varchar(20),OUT got_error INT)
   -> BEGIN
   -> DECLARE EXIT HANDLER FOR 1062 SET got_error=1;
   -> 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)

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

mysql> Delimiter ;
mysql> CALL Insert_Studentdetails4(104,'Ram','Chandigarh',@got_error);

Query OK, 0 rows affected (0.00 sec)

mysql> Select @got_error;
+------------+
| @got_error |
+------------+
|          1 |
+------------+
1 row in set (0.00 sec)