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)

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

  1. हम किसी विशेष MySQL डेटाबेस में संग्रहीत विचारों की सूची कैसे देख सकते हैं?

    निम्नलिखित प्रश्नों की सहायता से, हम किसी विशेष डेटाबेस में संग्रहीत दृश्यों की सूची देख सकते हैं। हम यहां क्वेरी नाम के डेटाबेस का इस्तेमाल कर रहे हैं। mysql> SELECT TABLE_NAME FROM information_schema.`TABLES` WHERE TABLE_TYPE LIKE'view' AND TABLE_SCHEMA LIKE 'query'; +----------

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

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

  1. जब रिकॉर्ड अपडेट किए जाते हैं तो मैं एक MySQL संग्रहीत प्रक्रिया में परिवर्तनीय मान से कैसे बचूं?

    हम एक संग्रहीत कार्यविधि बनाएंगे जो जब भी मान अद्यतन किया जाता है तो चर मान नहीं बदलता है। आइए पहले एक टेबल बनाएं - तालिका बनाएं DemoTable (Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Value int);क्वेरी ठीक, 0 पंक्तियाँ प्रभावित (0.63 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें -