2009-07-17 11 views
8

मैं फ्रीस्कड पर MySQL 5.1.28-rc के साथ काम कर रहा हूं। मैं सिर्फ MYSQL में संग्रहित प्रक्रियाओं का उपयोग करने का निर्णय लिया है और एक परीक्षण प्रक्रिया के रूप में नीचे बनाया:MYSQL संग्रहीत प्रक्रियाएं यदि कथन समस्या

DELIMITER $$ 
DROP PROCEDURE IF EXISTS test $$ 
CREATE PROCEDURE test(IN test VARCHAR(22)) 
BEGIN 
DECLARE count INT(11); 
SET count = (SELECT COUNT(*) FROM Test WHERE test_column = test); 
SELECT count; 
IF count = 0 THEN 
    SET count = 1; 
ELSE 
    SET count = 2; 
ENDIF; 
END $$ 
DELIMITER; 

यह प्रक्रिया उस में यदि बयान के बिना अच्छी तरह से काम है, लेकिन अगर बयान के साथ यह, देता ERROR 1064 (42000): 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 '; END'

मैं इस मुद्दे को कैसे हल कर सकता हूं? समस्या कहाँ हे?

उत्तर

20

ENDIF को MySQL में कोई स्थान की आवश्यकता नहीं है? अर्थात END IF

+2

पवित्र गाय के लिए समाधान, मैं कैसे याद कर सकता है कि :) – systemsfault

+3

यह असंभव पर निकट अपने खुद के कोड में लिखने की त्रुटियों को पहचानना है लगता है कृपया, चिंता मत करो। चलो इसे जोड़ी प्रोग्रामिंग के लिए सुनें या, यदि आप ऐसा नहीं कर सकते हैं, तो ...: डी –

5

बस गिनती या कुछ और की तरह

+0

क्या आप अपना उत्तर उचित ठहरा सकते हैं? जैसे दस्तावेज के लिंक के साथ? – Tim

+0

औचित्य? मोना ने उपर्युक्त उत्तर की प्रतिलिपि बनाई – Tivie

0

चर का उपयोग नहीं करना चाहिए संग्रहीत प्रक्रिया में end if में अंतरिक्ष की जरूरत है। तो इस-

DELIMITER $$ 
DROP PROCEDURE IF EXISTS test $$ 
CREATE PROCEDURE test(IN test VARCHAR(22)) 
BEGIN 
DECLARE var_count INT; 
SET var_count = (SELECT COUNT(*) FROM test WHERE test.textfield = test); 
IF var_count = 0 THEN 
    SET var_count = 1; 
ELSE SET var_count = 2; 
END IF; 
SELECT var_count; 
END $$ 
संबंधित मुद्दे