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)

अब, यदि हम कॉलम 'स्टूडेंटिड' के किसी भी डुप्लिकेट मान को जोड़ने का प्रयास करेंगे तो यह निष्पादन से बाहर हो जाएगा, इसने '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 संग्रहित प्रक्रिया में फॉर लूप का उपयोग कैसे करें?

    MySQL संग्रहीत कार्यविधि में FOR LOOP के साथ काम करने के लिए सिंटैक्स निम्नलिखित है - anyVariableName3 सेट करें तो लूप_लेबल छोड़ दें; अगर अंत; कोई भी वैरिएबल नाम 2 सेट करें =CONCAT (कोई भी वैरिएबल नाम 2, कोई भी वैरिएबल नाम 1, ,); कोई भी वैरिएबल नाम 1 =कोई भी वैरिएबल नाम 1 + 1 सेट करें; ITERATE लूप_

  1. संग्रहीत प्रक्रिया में IF का उपयोग कैसे करें और MySQL में चयन करें?

    आप संग्रहित प्रक्रिया में IF का उपयोग कर सकते हैं और IF() का चयन कथन में भी कर सकते हैं। IF() चुनिंदा स्टेटमेंट में सेलेक्ट करें if(0=0,Hello MySQL,condition is गलत); यह निम्नलिखित आउटपुट देगा - +------------------------------------------ --------+| अगर (टेस्ट =टेस्ट, हैलो MySQL, हालत गलत है) |+--

  1. एक MySQL संग्रहीत प्रक्रिया में डिलीमीटर का सही ढंग से उपयोग कैसे करें और मान डालें?

    आइए पहले एक टेबल बनाएं - );क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.87 सेकंड) यहाँ एक संग्रहीत कार्यविधि बनाने और मान सम्मिलित करने के लिए क्वेरी है (सही ढंग से सीमांकक का उपयोग करके) - सीमांकक; कॉल कमांड का उपयोग करके संग्रहीत कार्यविधि को कॉल करें - कॉल इन्सर्ट_नाम (क्रिस, ब्राउन); क्वेरी ओके,