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)

अब, यदि हम कॉलम 'studentid' का कोई डुप्लिकेट मान जोड़ने का प्रयास करेंगे तो यह निष्पादन जारी रखेगा, यह प्रोसीजर में लिखी क्वेरी 'select * from 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 डेटाबेस में संग्रहीत व्यू की सूची कैसे देखें?

    निम्न क्वेरी की सहायता से हम किसी विशेष डेटाबेस में संग्रहीत व्यू की सूची देख सकते हैं। हम यहाँ query नामक डेटाबेस का उपयोग कर रहे हैं। WHERE TABLE_TYPE LIKE VIEWAND TABLE_SCHEMA = query; +--------------+-----------------------------+ | TABLE_SCHEMA | TABLE_NAME | +--------------+-

  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 स्टोर्ड प्रोसीजर में वेरिएबल मान को रिकॉर्ड अपडेट होने पर बदलने से कैसे रोकें?

    हम एक स्टोर्ड प्रोसीजर बनाएंगे जो मान अपडेट होने पर वेरिएबल मान को नहीं बदलता। आइए पहले एक टेबल बनाते हैं: CREATE TABLE DemoTable ( Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, Value INT ); टेबल में कुछ रिकॉर्ड डालें: INSERT INTO DemoTable(Value) VALUES(100); टेबल से सभी रिकॉर्ड प्रदर्शित क