2012-03-10 28 views
6

मैं बस संग्रहीत प्रक्रियाओं के साथ अपने पैरों को गीला कर रहा हूं। ट्यूटोरियल है कि मैंने देखा है के अनुसार, इस वैध (MySQL 5.5) होना चाहिए:MySQL: संग्रहित प्रक्रिया में IF

CREATE PROCEDURE someFunction (a VARCHAR(256), b VARCHAR(256)) 
    BEGIN 
     DECLARE haveAllVariables INT; 
     SET haveAllVariables = 1; 

    IF  a = "" THEN SET haveAllVariables = 0 
    ELSEIF b = "" THEN SET haveAllVariables = 0 
    END IF; 

हालांकि, यह इस त्रुटि फेंक है:

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 'ELSEI 
F b = "" THEN SET haveAllVariables = 0 

मेरे वाक्य रचना में त्रुटि है?

धन्यवाद।

उत्तर

11

आप अर्धविराम

CREATE PROCEDURE someFunction (a VARCHAR(256), b VARCHAR(256)) 
    BEGIN 
     DECLARE haveAllVariables INT; 
     SET haveAllVariables = 1; 

    IF  a = "" THEN SET haveAllVariables = 0; 
    ELSEIF b = "" THEN SET haveAllVariables = 0; 
    END IF; 
+0

धन्यवाद! यह स्पष्ट होना चाहिए था! – dotancohen

5

संग्रहित प्रक्रियाओं भूल रहे हैं थोड़ी सूझबूझ से काम कर रहे हैं। लेकिन यहां एक उदाहरण है जिसका मैंने परीक्षण किया और आपके लिए पोस्ट किया। आपके उदाहरण में आप कुछ अर्धविराम और अंतिम "अंत" खो रहे थे।

DELIMITER $$ 
    CREATE PROCEDURE someFunction (a VARCHAR(256), b VARCHAR(256)) 
    BEGIN 
    DECLARE haveAllVariables INT; 
    SET haveAllVariables = 1; 

    IF a = '' THEN 
    SET haveAllVariables = 0; 
    ELSEIF b = '' THEN 
    SET haveAllVariables = 0; 
    END IF; 
END $$ 
+0

धन्यवाद। असल में 'ईएनडी' काफी नीचे है, कोड में कि पार्सर अभी तक नहीं पहुंच पाया! लेकिन वास्तव में यह लापता अर्धविराम था कि मेरी समस्या थी। – dotancohen

संबंधित मुद्दे