mysql声明变量的语法错误

mor*_*ris 23 mysql syntax

CREATE PROCEDURE dorepeat(IN p1 INT)
BEGIN
  DECLARE x INT DEFAULT 0;
  REPEAT SET x = x + 1; UNTIL x > p1 END REPEAT;
END
Run Code Online (Sandbox Code Playgroud)

我收到语法错误:

#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

但对我来说,一切似乎都是正确的.我真的没有任何线索!任何人都可以帮忙吗?

谢谢

Joh*_*ess 48

您需要临时更改分隔符,以便MySQL客户端在第3行看到分号时认为您的语句没有完成:

DELIMITER //

CREATE PROCEDURE dorepeat(IN p1 INT)
BEGIN
  DECLARE x INT DEFAULT 0;
  REPEAT SET x = x + 1; UNTIL x > p1 END REPEAT;
END//

DELIMITER ;
Run Code Online (Sandbox Code Playgroud)


Der*_*omm -4

删除 DECLARE,您应该能够执行以下操作:

SET @x = 0;
Run Code Online (Sandbox Code Playgroud)

另外,变量需要以@符号作为前缀

  • 与问题无关,但这确实对我有帮助。 (2认同)
  • 这将创建对整个会话可见的变量,您只需声明它们,因为它们仅在存储过程中可见。 (2认同)