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)

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

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 संग्रहीत फ़ंक्शन कैसे लिख सकता हूं जो किसी दिए गए नंबर के फैक्टोरियल की गणना करता है?

    निम्नलिखित एक संग्रहीत फ़ंक्शन का उदाहरण है जो किसी दिए गए नंबर के फ़ैक्टोरियल की गणना कर सकता है - 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; factorial_loop: REPEAT SE

  1. एक MySQL संग्रहीत फ़ंक्शन कैसे लिखें जो किसी तालिका में मानों को अद्यतन करता है?

    जैसा कि हम जानते हैं कि जब हम परिणाम वापस करना चाहते हैं तो फ़ंक्शन का सबसे अच्छा उपयोग किया जाता है। इसलिए, जब हम मूल्यों को सम्मिलित या अद्यतन करने जैसी तालिकाओं में हेरफेर करने के लिए संग्रहीत कार्य बनाएंगे तो यह कमोबेश संग्रहीत प्रक्रियाओं की तरह होगा। निम्नलिखित उदाहरण में, हम tbl_update नामक ए

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

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