MySQL में "SQL सिंटैक्स एरर" को समझना और हल करना
MySQL स्टोर्ड प्रोसीजर, ट्रिगर या फंक्शन बनाते समय अक्सर डेवलपर्स को यह एरर मिलती है: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near..." यह एरर आमतौर पर तब होती है जब MySQL डिफ़ॉल्ट डिलीमीटर (;) को स्टोर्ड प्रोसीजर के अंदर मौजूद सेमीकॉलन से भ्रमित कर देता है।
समाधान: डिलीमीटर बदलें
इस समस्या से बचने के लिए, स्टोर्ड प्रोसीजर/ट्रिगर/फंक्शन बनाते समय डिलीमीटर को ; से // (या कोई अन्य कस्टम कैरेक्टर) में बदलना पड़ता है।
सिंटैक्स:
DELIMITER //
CREATE PROCEDURE yourProcedureName()
BEGIN
Statement1;
...
StatementN;
END;
//
DELIMITER ;
व्यावहारिक उदाहरण
आइए एक स्टोर्ड प्रोसीजर बनाते हैं जो employeetable से सभी रिकॉर्ड लौटाता है:
mysql> DELIMITER //
mysql> CREATE PROCEDURE sp_getAllRecords()
-> BEGIN
-> SELECT * FROM employeetable;
-> END;
-> //
Query OK, 0 rows affected (0.23 sec)
mysql> DELIMITER ;
स्टोर्ड प्रोसीजर को कॉल करना:
CALL yourStoredProcedureName();
हमारे उदाहरण के लिए:
mysql> CALL sp_getAllRecords();
आउटपुट:
+------------+--------------+----------------+ | EmployeeId | EmployeeName | EmployeeSalary | +------------+--------------+----------------+ | 2 | Bob | 1000 | | 3 | Carol | 2500 | +------------+--------------+----------------+ 2 rows in set (0.00 sec) Query OK, 0 rows affected (0.02 sec)
मुख्य बिंदु:
- हमेशा
DELIMITER //से शुरू करें और अंत मेंDELIMITER ;पर वापस आएं - यह तकनीक ट्रिगर और फंक्शन के लिए भी लागू होती है
//की जगह कोई भी ऐसा कैरेक्टर उपयोग कर सकते हैं जो आपके कोड में न हो