2012-03-10 40 views
6

Me acabo de mojar los pies con los procedimientos almacenados. De acuerdo con los tutoriales que he visto, esto debe ser válido (MySQL 5.5):MySQL: IF en el procedimiento almacenado

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; 

Sin embargo, se está lanzando este error:

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 

¿Dónde está el error en mi sintaxis?

Gracias.

Respuesta

11

Te falta un punto y coma

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

¡Gracias! ¡Debería haber sido obvio! – dotancohen

5

Los procedimientos almacenados son un poco complicado. Pero aquí hay un ejemplo que probé y publiqué para ti. En tu ejemplo, faltaste un par de puntos y comas y el final "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

Gracias. ¡De hecho, el 'END' está bastante más abajo, en un código al que el analizador no llegó aún! Pero de hecho fue el punto y coma que faltaba el que era mi problema. – dotancohen

Cuestiones relacionadas