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

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

<घंटा/>

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

उदाहरण

mysql> Delimiter //mysql> प्रक्रिया बनाएँ Insert_Studentdetails3(S_Studentid INT, S_StudentName Varchar(20), S_Address Varchar(20)) -> BEGIN -> SQLEXCEPTION के लिए डिक्लेयर एग्जिट हैंडलर चुनें 'एक त्रुटि मिली'; -> छात्र_विवरण में सम्मिलित करें -> (छात्र, छात्र का नाम, पता) -> मान (S_Studentid, S_StudentName, S_Address); -> छात्र_विवरण से * चुनें; -> END//क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.00 सेकंड)mysql> Delimiter;mysql> CALL Insert_Studentdetails3(105, 'मोहन', 'चंडीगढ़');+-----------+-- -----------+---------------+| स्टूडेंटिड | छात्र का नाम | पता |+-----------+----------------+-----------+| 100 | गौरव | दिल्ली || 101 | रमन | शिमला || 103 | राहुल | जयपुर || 104 | राम | चंडीगढ़ || 105 | मोहन | चंडीगढ़ |+-----------+-------------+-----------+5 पंक्तियों में सेट (0.04 सेकंड) क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित हुई (0.06 सेकंड)

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

mysql> कॉल Insert_Studentdetails3(105, 'सोहन', 'भोपाल');+--------------+| त्रुटि मिली |+--------------+| त्रुटि मिली 
  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, हालत गलत है) |+--