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)