2012-03-10 11 views
6

Po prostu mam mokre stopy z procedur przechowywanych. Zgodnie z samouczków, które widziałem, to powinno być ważne (MySQL 5.5):MySQL: IF w procedurze przechowywanej

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; 

jednak rzuca ten błąd:

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 

Gdzie jest błąd w moim składni?

Dzięki.

Odpowiedz

11

Brakuje średnikiem

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

Dziękujemy! To powinno być oczywiste! – dotancohen

5

Przechowywane procedury są nieco skomplikowane. Ale oto przykład, który przetestowałem i wysłałem dla ciebie. W twoim przykładzie brakowało Ci kilku średników i końcowego "KONIEC".

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

Dziękuję. W rzeczywistości "END" jest o wiele dalej w kodzie, do którego parser jeszcze się nie dostał! Ale to był brakujący średnik, który był moim problemem. – dotancohen

Powiązane problemy