कारण
MySQL डिलीमीटर त्रुटि तब होती है जब आप पाइप डिलीमीटर (|) का उपयोग सेमीकोलन (;) के साथ करते हैं और MySQL संस्करण 8.0.12 से कम होता है।
व्याख्या
- MySQL पाइप (
|) को एक डिलीमीटर मानता है और सेमीकोलन (;) को दूसरा। - दोनों को एक साथ उपयोग करने से MySQL भ्रमित हो जाता है।
- MySQL 8.0.12+ में पाइप डिलीमीटर सेमीकोलन के साथ ठीक काम करता है।
- पुराने संस्करणों में यह डिलीमीटर त्रुटि का कारण बनता है।
काम करने वाला उदाहरण (MySQL 8.0.12+)
mysql> DELIMITER |;
mysql> CREATE PROCEDURE getSumOfTwoNumbers()
BEGIN
SELECT 2+3 AS TotalValue;
END ;
|;
Query OK, 0 rows affected (0.17 sec)
mysql> DELIMITER ;
प्रोसीजर कॉल करना
mysql> CALL getSumOfTwoNumbers();
+------------+ | TotalValue | +------------+ | 5 | +------------+
सही दृष्टिकोण: डिलीमीटर अलग-अलग सेट करें
चरण 1: पाइप डिलीमीटर सेट करें
mysql> DELIMITER |
चरण 2: स्टोर्ड प्रोसीजर बनाएं (पाइप से समाप्त)
mysql> CREATE PROCEDURE Demo()
BEGIN
SELECT 2*3 AS TotalMultiplication;
END ;
|
चरण 3: वापस सेमीकोलन डिलीमीटर पर जाएं
mysql> DELIMITER ;
सर्वोत्तम अभ्यास
- स्टोर्ड प्रोग्राम (प्रोसीजर, फंक्शन, ट्रिगर) बनाने से पहले
DELIMITER //याDELIMITER |सेट करें। - प्रोग्राम परिभाषा नए डिलीमीटर (जैसे
//या|) से समाप्त करें। - बाद में तुरंत
DELIMITER ;पर वापस लौटें। DELIMITER |;(दोनों एक साथ) लिखने से बचें जब तक आप MySQL 8.0.12+ पर न हों।
नोट
सेमीकोलन (;) MySQL का डिफ़ॉल्ट स्टेटमेंट टर्मिनेटर है। इसे केवल डिलीमीटर बदलने के बाद ही बदलें, और काम पूरा होने पर तुरंत बहाल करें।