2012-03-10 1 views
6

Mi sto solo bagnando i piedi con le stored procedure. Secondo i tutorial che ho visto, questo dovrebbe essere valido (MySQL 5.5):MySQL: IF in stored procedure

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; 

Tuttavia, si sta gettando questo errore:

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 

Dov'è l'errore nel mio di sintassi?

Grazie.

risposta

11

Stai manca un punto e virgola

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

Grazie! Dovrebbe essere ovvio! – dotancohen

5

Le stored procedure sono un po 'complicato. Ma ecco un esempio che ho testato e pubblicato per te. Nel tuo esempio ti mancavano un paio di punti e virgola e il finale "FINE".

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

Grazie. In realtà il 'END' è un bel po 'più in basso, nel codice che il parser non ha ancora ottenuto! Ma in realtà era il punto e virgola mancante che era il mio problema. – dotancohen