2012-03-10 18 views
6

私は自分の足をストアドプロシージャで濡らしています。私が見たのチュートリアルによると、これは(MySQLの5.5)有効である必要があります。MySQL:ストアドプロシージャの場合

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

ストアドプロシージャは少しトリッキーですセミコロンを逃しています。しかし、私はあなたのためにテストして投稿した例です。あなたの例では、2つのセミコロンと最後の "END"がありませんでした。

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

ありがとうございます。実際には、 'END'はかなり下にあります。パーサーはまだまだコードに到達していません!しかし、それは実際に私の問題だったセミコロンがないことでした。 – dotancohen

関連する問題