यदि आप ऐसी स्थिति के लिए "प्रारंभिक निकास" चाहते हैं जिसमें कोई त्रुटि नहीं थी, तो @piotrm द्वारा पोस्ट किए गए स्वीकृत उत्तर का उपयोग करें। आम तौर पर, हालांकि, आप एक त्रुटि स्थिति (विशेष रूप से एक SQL प्रक्रिया) के कारण परेशान हो रहे होंगे।
MySQL v5.5 के रूप में आप एक अपवाद फेंक सकते हैं। अपवाद हैंडलर आदि की उपेक्षा करना, जो एक ही परिणाम प्राप्त करेगा, लेकिन एक क्लीनर में, अधिक मार्मिक तरीके से।
ऐसे:
DECLARE CUSTOM_EXCEPTION CONDITION FOR SQLSTATE '45000';
IF <Some Error Condition> THEN
SIGNAL CUSTOM_EXCEPTION
SET MESSAGE_TEXT = 'Your Custom Error Message';
END IF;
नोट SQLSTATE '45000'
"अनहैंडल्ड यूज़र-डिफ़ाइंड अपवाद स्थिति" के बराबर है। डिफ़ॉल्ट रूप से, यह एक त्रुटि कोड का उत्पादन करेगा 1644
(जिसका वही अर्थ है)। ध्यान दें कि यदि आप चाहें तो अन्य शर्त कोड या त्रुटि कोड फेंक सकते हैं (अपवाद हैंडलिंग के लिए अतिरिक्त विवरण)।
इस विषय पर अधिक जानकारी के लिए देखें:
https://dev.mysql.com/doc/refman/5.5/en/signal.html
MySQL फ़ंक्शन के भीतर एक त्रुटि कैसे बढ़ाएं
http://www.databasejournal.com/features/mysql/mysql-error-handling-using-the-signal-and-resignal-statements.html
परिशिष्ट
जैसा कि मैं इस पोस्ट को फिर से पढ़ रहा हूं, मुझे एहसास हुआ कि मेरे पास जोड़ने के लिए कुछ अतिरिक्त है। MySQL v5.5 से पहले, एक अपवाद फेंकने का अनुकरण करने का एक तरीका था। यह वास्तव में एक ही बात नहीं है, लेकिन यह एनालॉग था: एक प्रक्रिया को कॉल करके एक त्रुटि बनाएं जो मौजूद नहीं है। एक नाम से प्रक्रिया को कॉल करें जो एक उपयोगी साधन प्राप्त करने के लिए सार्थक है जिससे यह निर्धारित किया जा सके कि समस्या क्या थी। जब त्रुटि होती है, तो आपको विफलता की रेखा (आपके निष्पादन के संदर्भ के आधार पर) देखने को मिलेगी।
उदाहरण के लिए:
CALL AttemptedToInsertSomethingInvalid;
ध्यान दें कि जब आप एक प्रक्रिया बनाते हैं, तो ऐसी चीजों पर कोई सत्यापन नहीं किया जाता है। इसलिए एक संकलित भाषा की तरह कुछ में, आप कभी भी एक फ़ंक्शन को कॉल नहीं कर सकते हैं, जो इस तरह से स्क्रिप्ट में नहीं था, यह बस रनटाइम पर विफल हो जाएगा, जो इस मामले में वांछित है!
IF tablename IS NOT NULL THEN
...;)