Erreur MySQL: vous avez une erreur dans votre syntaxe SQL; vérifiez le manuel qui correspond à la version de votre serveur MySQL pour la bonne syntaxe à utiliser près

j'ai la procédure Stockée comme ceci:

CREATE PROCEDURE ProG()
  BEGIN
    SELECT * FROM `hs_hr_employee_leave_quota`;
  END

Mais il donne l'erreur:

#1064 - Vous avez une erreur dans votre syntaxe SQL; vérifiez le manuel qui correspond à la version de votre serveur MySQL pour la syntaxe à utiliser près de " à la ligne 3

que signifie l'erreur? Qu'est-ce qui ne va pas avec la ligne 2?

27
demandé sur Eric Leschinski 2011-04-18 17:14:02

4 réponses

vous devez changer le délimiteur avant d'utiliser les déclencheurs, les procédures stockées et ainsi de suite.

delimiter //
create procedure ProG() 
begin 
SELECT * FROM hs_hr_employee_leave_quota;
end;//
delimiter ;
53
répondu Nicola Cossu 2011-04-18 13:16:20

comment trouver ce que cette erreur MySQL essaie de dire:

#1064 - You have an error in your SQL syntax;

Cette erreur n'a pas d'indices. Vous avez pour vérifier l'ensemble de ces éléments pour voir où votre erreur est:

  1. Vous avez omis, ou inclus inutile symbole: !@#$%^&*()-_=+[]{}\|;:'",<>/?
  2. Un égaré, manquant ou inutile mots clés: select, into, ou d'innombrables autres.
  3. Vous avez des caractères unicode qui ressemblent à des caractères ascii dans votre requête, mais ne sont pas reconnus.
  4. égaré, manquant ou inutile des espaces ou des lignes entre les mots-clés.
  5. guillemets simples, guillemets doubles, parenthèses ou accolades.

retirez autant que vous pouvez de la requête cassée jusqu'à ce qu'elle commence à fonctionner. Et puis utiliser PostgreSQL la prochaine fois qui a un système de rapport de syntaxe saine.

12
répondu Eric Leschinski 2014-02-14 16:20:16

Délimiteurs, les séparateurs...

vous en avez vraiment besoin quand il y a plusieurs déclarations dans votre procédure. (en d'autres termes, avez-vous un ; dans votre code et ensuite plus d'énoncés / commandes? Ensuite, vous devez utiliser des délimiteurs).

pour une procédure aussi simple que la vôtre cependant, vous pourriez juste faire:

CREATE PROCEDURE ProG()
  SELECT * FROM `hs_hr_employee_leave_quota`;
5
répondu ypercubeᵀᴹ 2011-04-18 13:55:44

ceci pourrait être un problème de mémoire sur mysql essayez d'augmenter max_allowed_packet dans mon.ini

0
répondu sherin.k 2017-06-15 06:54:38