Voici les informations de mon serveur de base de données

Type de serveur: Version du serveur MySQL: 5.7.16 - Version du protocole MySQL Community Server (GPL): 10

Je cours sous le code et j'ai un message d'erreur

CREATE PROCEDURE dowhile()
BEGIN
  DECLARE v1 INT DEFAULT 5;

  WHILE v1 > 0 DO
    SET v1 = v1 - 1;
  END WHILE;
END;

I got an error messate: #1064 - 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 3
0
Van Der Cong 20 juin 2019 à 06:12

3 réponses

Meilleure réponse

Vous devez changer temporairement le déliminateur (car la procédure contient le déliminateur;) et aussi la fin de la procédure avec le déliminateur temporaire.Après la construction de la procédure, vous devez changer le déliminateur en ;

Essayez le code ci-dessous en utilisant la ligne de commande Mysql

DELIMITER $$
DROP PROCEDURE IF EXISTS dowhile$$
CREATE PROCEDURE dowhile()
BEGIN
DECLARE v1 INT DEFAULT 5;
WHILE v1 > 0 DO
SET v1 = v1 - 1;
END WHILE;
END$$
DELIMITER ;

Après cela, vous appelez la procédure en utilisant

call dowhile();
2
Mangesh Auti 20 avril 2020 à 07:46

Essaye ça:

DELIMITER $

CREATE PROCEDURE dowhile()

BEGIN
  DECLARE v1 INT DEFAULT 5;

  WHILE v1 > 0 DO
    SET v1 = v1 - 1;
  END WHILE;
END;

DELIMITER ;

Vous devez changer temporairement le délimiteur, afin que MySQL puisse accepter une séquence d'instructions, plutôt que de s'arrêter après le premier point-virgule.

1
Ricky McMaster 20 juin 2019 à 03:57
DELIMITER //

CREATE PROCEDURE dowhile()
BEGIN
  DECLARE v1 INT DEFAULT 5;

  WHILE v1 > 0 DO
    SET v1 = v1 - 1;
  END WHILE;
END
//

DELIMITER ;
0
fifonik 20 juin 2019 à 03:42