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

저장 프로시저에서 변수의 특정 값을 설정하고 실행을 계속하는 MySQL 처리기를 어떻게 작성할 수 있습니까?

<시간/>

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

mysql> DELIMITER //
mysql> Create Procedure Insert_Studentdetails2(S_Studentid INT, S_StudentName Varchar(20), S_Address Varchar(20),OUT got_error INT)
    -> BEGIN
    -> DECLARE CONTINUE HANDLER FOR SQLEXCEPTION 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)
mysql> Delimiter ;

mysql> CALL Insert_Studentdetails2(104,'Ram',‘Chandigarh',@got_error);
+-----------+-------------+------------+
| Studentid | StudentName | address    |
+-----------+-------------+------------+
| 100       | Gaurav      | Delhi      |
| 101       | Raman       | Shimla     |
| 103       | Rahul       | Jaipur     |
| 104       | Ram         | Chandigarh |
+-----------+-------------+------------+
4 rows in set (0.04 sec)
Query OK, 0 rows affected (0.06 sec)

이제 'studentid' 열의 중복 값을 추가하려고 하면 실행을 계속하고 'select * from student_detail' 프로시저에 작성된 쿼리의 결과 집합을 제공하고 got_error 변수의 값을 1로 설정합니다. .

mysql> CALL Insert_Studentdetails2(104,'Shyam','Hisar',@got_error);
+-----------+-------------+------------+
| Studentid | StudentName | address    |
+-----------+-------------+------------+
| 100       | Gaurav      | Delhi      |
| 101       | Raman       | Shimla     |
| 103       | Rahul       | Jaipur     |
| 104       | Ram         | Chandigarh |
+-----------+-------------+------------+
4 rows in set (0.00 sec)
Query OK, 0 rows affected (0.03 sec)

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