Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

स्टोर्ड प्रोसीजर में MySQL हैंडलर कैसे लिखें जो त्रुटि संदेश दे और निष्पादन जारी रखे?


हम जानते हैं कि जब भी MySQL स्टोर्ड प्रोसीजर में कोई अपवाद होता है, तो उचित त्रुटि संदेश देकर उसे संभालना बहुत महत्वपूर्ण है क्योंकि यदि हम अपवाद को नहीं संभालते हैं, तो स्टोर्ड प्रोसीजर में उस विशेष अपवाद के साथ एप्लिकेशन के विफल होने की संभावना होगी। MySQL एक हैंडलर प्रदान करता है जो एक त्रुटि संदेश देता है और निष्पादन जारी रखता है। इसे दर्शाने के लिए, हम निम्न उदाहरण का उपयोग कर रहे हैं जिसमें हम प्राथमिक कुंजी कॉलम में डुप्लिकेट मान सम्मिलित करने का प्रयास कर रहे हैं।

उदाहरण

mysql> DELIMITER //
mysql> Create Procedure Insert_Studentdetails(S_Studentid INT, S_StudentName Varchar(20), S_Address Varchar(20))
    ->
    BEGIN
    DECLARE CONTINUE 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.19 sec)

उपरोक्त प्रोसीजर को इनवोक करें और यह त्रुटि संदेश 'got an error' देगा और निष्पादन जारी रखेगा यदि हम कॉलम 'studentid' में डुप्लिकेट मान डालने का प्रयास करेंगे।

mysql> Delimiter ;
mysql> CALL Insert_Studentdetails(100, 'Gaurav', 'Delhi');
+-----------+-------------+---------+
| Studentid | StudentName | address |
+-----------+-------------+---------+
|         100 | Gaurav      | Delhi   |
+-----------+-------------+---------+
1 row in set (0.11 sec)
Query OK, 0 rows affected (0.12 sec)

mysql> CALL Insert_Studentdetails(101, 'Raman', 'Shimla');
+-----------+-------------+---------+
| Studentid | StudentName | address |
+-----------+-------------+---------+
|         100 | Gaurav      | Delhi   |
|         101 | Raman       | Shimla  |
+-----------+-------------+---------+
2 rows in set (0.06 sec)
Query OK, 0 rows affected (0.12 sec)

mysql> CALL Insert_Studentdetails(101, 'Rahul', 'Jaipur');
+--------------+
| Got an error |
+--------------+
| Got an error |
+--------------+
1 row in set (0.03 sec)
+-----------+-------------+---------+
| Studentid | StudentName | address |
+-----------+-------------+---------+
|         100 | Gaurav      | Delhi   |
|         101 | Raman       | Shimla  |
+-----------+-------------+---------+
2 rows in set (0.04 sec)
Query OK, 0 rows affected (0.05 sec)

mysql> CALL Insert_Studentdetails(103, 'Rahul', 'Jaipur');
+-----------+-------------+---------+
| Studentid | StudentName | address |
+-----------+-------------+---------+
|         100 | Gaurav      | Delhi   |
|         101 | Raman       | Shimla  |
|         103 | Rahul       | Jaipur  |
+-----------+-------------+---------+
3 rows in set (0.08 sec)
Query OK, 0 rows affected (0.10 sec)

  1. - MySQL में स्टोर्ड फंक्शन लिखकर किसी संख्या का फैक्टोरियल कैसे निकालें?

    किसी दी गई संख्या का फैक्टोरियल (गुणनफल) निकालने के लिए MySQL स्टोर्ड फंक्शन का एक उदाहरण नीचे दिया गया है: CREATE FUNCTION factorial (n DECIMAL(3,0)) RETURNS DECIMAL(20,0) DETERMINISTIC BEGIN DECLARE factorial DECIMAL(20,0) DEFAULT 1; DECLARE counter DECIMAL(3,0); SET counter = n

  1. - MySQL स्टोर्ड फंक्शन से टेबल के मान कैसे अपडेट करें?

    स्टोर्ड फंक्शन का मुख्य उपयोग परिणाम लौटाना होता है। लेकिन जब हम टेबल में डेटा डालने (INSERT) या अपडेट (UPDATE) करने के लिए फंक्शन बनाते हैं, तो यह स्टोर्ड प्रोसीजर की तरह ही काम करता है। नीचे एक उदाहरण दिया गया है जहां हम student_marks टेबल के मान अपडेट करने के लिए tbl_update नामक फंक्शन बनाते हैं।

  1. - MySQL में स्टोर्ड प्रोसीजर और सेलेक्ट में IF का उपयोग कैसे करें?

    आप स्टोर्ड प्रोसीजर में IF और सेलेक्ट स्टेटमेंट में IF() का उपयोग कर सकते हैं। सेलेक्ट स्टेटमेंट में IF() IF() in select statement mysql> select if(0=0,Hello MySQL,condition is wrong); इससे निम्न आउटपुट प्राप्त होगा: +------------------------------------------------------+ | if(test=test,Hello My