इसके साथ समस्या:
DELIMITER $$
DROP PROCEDURE IF EXISTS my_test;
CREATE PROCEDURE my_test() ...
यह है कि MySQL DROP PROCEDURE
के अंत में अर्धविराम नहीं देख रहा है कथन के अंत के रूप में कथन पंक्ति। ऐसा इसलिए है क्योंकि पिछली पंक्ति ने MySQL को बताया कि स्टेटमेंट टर्मिनेटर अर्धविराम के अलावा कुछ और था। आपने MySQL को बताया कि दो डॉलर के संकेतों के साथ बयान समाप्त होने जा रहे थे। तो MySQL DROP PROCEDURE
पढ़ रहा है लाइन, स्टेटमेंट टर्मिनेटर की तलाश में। और पूरा बूँद इसे पढ़ता है एक मान्य MySQL कथन नहीं है, यह एक वाक्य रचना त्रुटि उत्पन्न करता है।
समाधान:या तो DROP PROCEDURE
को स्थानांतरित करें लाइन पहले DELIMITER $$
रेखा; या DROP PROCEDURE
को समाप्त करें अर्धविराम के बजाय निर्दिष्ट सीमांकक के साथ बयान।
आपके द्वारा रिपोर्ट की जाने वाली दूसरी समस्या एक सिंटैक्स त्रुटि है। ऐसा इसलिए हो रहा है क्योंकि MySQL IF
को नहीं पहचानता है एक मान्य SQL कथन की शुरुआत के रूप में।
IF
कथन मान्य है केवल एक MySQL संग्रहीत प्रोग्राम के संदर्भ में (उदाहरण के लिए, CREATE PROCEDURE
के भीतर) बयान।)
समाधान:IF
. का उपयोग करें केवल एक MySQL संग्रहीत प्रोग्राम के संदर्भ में कथन।
आपके द्वारा रिपोर्ट की जाने वाली तीसरी समस्या भी सिंटैक्स त्रुटि है। ऐसा इसलिए हो रहा है क्योंकि आपके पास SET
. के लिए कोई मान्य सिंटैक्स नहीं है बयान; SET
. के लिए MySQL सिंटैक्स उपयोगकर्ता चर के लिए एक मान निर्दिष्ट करने के लिए कथन है:
SET @uservar = expr
MySQL एक अभिव्यक्ति की अपेक्षा कर रहा है बराबर चिह्न के बाद। MySQL नहीं है SQL कथन की अपेक्षा करना।
एक SELECT
. से परिणाम के रूप में एक उपयोगकर्ता चर के लिए एक मान निर्दिष्ट करने के लिए कथन, उदाहरण के लिए, चयन कथन के भीतर असाइनमेंट करें:
SELECT @Count := Count(id) FROM `tbl_object_users` WHERE `username`='jp2code'
ध्यान दें कि SELECT
. के अंदर असाइनमेंट ऑपरेटर कथन है :=
(बृहदान्त्र बराबर), न केवल =
।