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

स्टोर्ड प्रोसीजर में MySQL हैंडलर कैसे लिखें जो डिफ़ॉल्ट MySQL त्रुटि के लिए SQLSTATE का उपयोग करे और निष्पादन से बाहर निकले?


हम जानते हैं कि जब भी 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)

  1. - MySQL स्टोर्ड प्रोसीजर में FOR LOOP कैसे उपयोग करें?

    MySQL में FOR LOOP नहीं, WHILE LOOP उपयोग करें MySQL स्टोर्ड प्रोसीजर में **FOR LOOP नहीं होता** (Oracle PL/SQL के विपरीत)। इसके बजाय WHILE या LOOP ... LEAVE निर्माण का उपयोग करें। WHILE LOOP पैटर्न (सिफारिश) DELIMITER // CREATE PROCEDURE YourProcedureName() BEGIN DECLARE counter INT DEFAULT 1;

  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

  1. - MySQL स्टोर्ड प्रोसीजर में डिलीमीटर का सही उपयोग और मान डालना

    समस्या स्टोर्ड प्रोसीजर बनाते समय डिफ़ॉल्ट डिलीमीटर (;) क्वेरी को जल्दी समाप्त कर देता है। समाधान DELIMITER बदलें, प्रोसीजर बनाएं, फिर डिलीमीटर बहाल करें। उदाहरण टेबल बनाएं: ); स्टोर्ड प्रोसीजर बनाएं DELIMITER ; प्रोसीजर कॉल करें CALL insert_name(Chris, Brown); परिणाम +------------------+---