Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

기본 MySQL 오류에 대해 SQLSTATE를 사용하고 실행을 종료하는 MySQL 처리기를 저장 프로시저에서 어떻게 작성할 수 있습니까?

<시간/>

MySQL 저장 프로시저에서 예외가 발생할 때마다 적절한 오류 메시지를 던져 이를 처리하는 것이 매우 중요하다는 것을 알고 있듯이 예외를 처리하지 않으면 저장 프로시저에서 해당 예외로 응용 프로그램이 실패할 가능성이 있기 때문입니다. . MySQL은 기본 MySQL 오류에 대해 SQLSTATE를 사용하고 실행을 종료하는 핸들러를 제공합니다. 이를 보여주기 위해 기본 키 열에 중복 값을 삽입하려는 다음 예제를 사용하고 있습니다.

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)