2011-11-07 12 views
2

Je n'arrive pas à comprendre d'où ça vient ... MySQL me donne une erreur de syntaxe d'une citation vide et me donne un numéro de ligne qui ne semble pas du tout erroné. Pire encore, supprimer la boucle sur laquelle pointe le numéro de ligne me donne toujours la même erreur, juste avec un numéro de ligne différent.Erreur de syntaxe de ''?

ERROR 1064 (42000) at line 13: 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 '' at line 39

Parlez des commentaires inutiles de MySQL!

Le code en question est une fonction stockée, et je me suis heurté à cela en essayant d'appliquer the answer to another question. Le code mis à jour est available here.


EDIT: @MarkByers, voici la fonction réduite aussi bas que je pouvais l'obtenir en déclenchant toujours l'erreur:

DROP FUNCTION IF EXISTS months_within_range; 

DELIMITER // 

CREATE FUNCTION months_within_range(starts_at DATE, ends_at DATE, filter_range VARCHAR(255)) RETURNS TINYINT 
BEGIN 
    SET @matches = 1; 
    IF @matches >= 1 THEN RETURN 1; 
    ELSE RETURN 0; 
END// 

DELIMITER ; 
+0

Veuillez ne pas marquer vos titres. Oh man, 149 d'entre eux ... :( –

+0

Pouvez-vous essayer de réduire la procédure stockée de sorte qu'il contienne le plus petit nombre de lignes possible, mais produit toujours l'erreur? –

+0

@ TomalakGeret'kal Les vieilles habitudes meurent dur. :) – neezer

Répondre

1

Il vous manque l'END IF

IF @matches >= 1 THEN RETURN 1; 
ELSE RETURN 0; 
END IF; 

Et la raison RETURN IF(@matches >= 1, 1, 0); fonctionne parce que c'est le IF function, qui est différent du IF statement

+0

Bien sûr, c'est quelque chose de simple. Merci ... regardé ce truc pour waaaaaay trop longtemps. – neezer