2015-02-12 58 views
0

我有这个疑问:SQL查询无法找到的错误

DECLARE @i int = 0 
WHILE @i < 100 BEGIN 
    SET @i = @i + 1 
    INSERT INTO lottery (ticket, bought) VALUES (@i, false) 
END 

MySQL服务器

Error: Error Code: 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 'DECLARE @i int = 0 WHILE @i < 100 BEGIN
SET @i = @i + 1 INSERT INTO lott' at line 1

但它说的错误是,但不是哪里。 我做错了什么?

回答

1

你应该把第一行是这样的:

DECLARE @i int DEFAULT 0; 
0

我假设你要创建一个存储过程。

如果您在存储过程中有多个语句,则需要使用一个标准分隔符的半列来分隔它们,因此您必须在正面进行更改。即:

DELIMTER $$ 

CREATE PROCEDURE procedurename() 
BEGIN 
    DECLARE i INT; 
    SET i := 0; 
    WHILE i < 100 
    BEGIN 
     SET i := i + 1; 
     INSERT INTO lottery (ticket, bought) VALUES (i, 0); 
    END; 
END$$ 

DELIMITER ; 

注意,用户变量是基于连接的,并在过程中声明的变量仅在程序本身的范围。