8
votes

Procédures stockées MySQL si le problème de la déclaration

Je travaille avec MySQL 5.1.28-RC sur FreeBSD. Je viens de décider d'utiliser des procédures stockées dans MySQL et j'ai créé une procédure de test comme ci-dessous:

xxx

Cette procédure fonctionne bien sans si la déclaration dedans, mais avec le Si déclaration il donne, Erreur 1064 (42000): Vous avez une erreur dans votre syntaxe SQL; Vérifiez le manuel qui correspond à votre version MySQL Server pour la syntaxe de droite à utiliser près »; Fin '

Comment puis-je résoudre ce problème? Où est le problème?


0 commentaires

3 Réponses :


20
votes

endif nécessite un espace dans MySQL ne l'est-il pas? I.e. fin si


2 commentaires

Sainte vache, comment pourrais-je manquer ça :)


Il est presque impossible de repérer des fautes de frappe dans votre propre code, ne vous inquiétez pas. Écoutons-le pour la programmation par paire ou, si vous ne pouvez pas faire cela, alors ...: D



5
votes

Il suffit de besoin d'espace dans fin si dans la procédure stockée


2 commentaires

Pouvez-vous justifier votre réponse? Par exemple. avec un lien vers la documentation?


Justification? Mona vient de copier la réponse ci-dessus



0
votes

ne doit pas utiliser de variables comme le nombre ou quelque chose. Alors, veuillez trouver la solution pour cela-

DELIMITER $$ 
DROP PROCEDURE IF EXISTS test $$
CREATE PROCEDURE test(IN test VARCHAR(22) )
BEGIN
 DECLARE var_count INT;
 SET var_count = (SELECT COUNT(*) FROM test WHERE test.textfield = test);
 IF var_count = 0 THEN
  SET var_count = 1;
 ELSE SET var_count = 2;
 END IF;
 SELECT var_count;
END $$


0 commentaires