这是mysql 的一段循环

USE aa;
DELIMITER 
DROP PROCEDURE IF EXISTS test_two2;
CREATE PROCEDURE dingd()
BEGIN
DECLARE i INT DEFAULT 4000;
WHILE i < 5000 DO 
INSERT INTO newUid VALUES (i)
SET i =i+1;
END WHILE;
END

 

执行有错误

错误代码: 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 'set i =i+1;
end while
end' at line 6

执行耗时   : 0 sec
传送时间   : 0 sec
总耗时      : 0.001 sec

USE aa;
DELIMITER $$  --改变 MySQL delimiter 为:“$$” 
DROP PROCEDURE IF EXISTS test_two2 $$
CREATE PROCEDURE test_two2()
BEGIN
DECLARE i INT DEFAULT 4000;
WHILE i < 5000 DO 
INSERT INTO newUid VALUES (i);
SET i =i+1;
END WHILE;
END; $$
DELIMITER ; --改回默认的;

 

INSERT INTO newUid VALUES (i)   少了;

不是啊  加上;也不行啊 

USE aa;
DELIMITER 
DROP PROCEDURE IF EXISTS test_two2;
CREATE PROCEDURE test_two2()
BEGIN
DECLARE i INT DEFAULT 4000;
WHILE i < 5000 DO 
INSERT INTO newUid VALUES (i);
SET i =i+1;
END WHILE;
END

执行耗时   : 0.001 sec
传送时间   : 0.004 sec
总耗时      : 0.005 sec
--------------------------------------------------

查询:create procedure test_two2() begin declare i int default 4000; while i < 5000 do INSERT INTO d_new_uid VALUES (i); set i =i+1; e...

错误代码: 1304
PROCEDURE test_two2 already exists

执行耗时   : 0 sec
传送时间   : 0 sec
总耗时      : 0.002 sec

USE aa;
DELIMITER $$  --改变 MySQL delimiter 为:“$$” 
DROP PROCEDURE IF EXISTS test_two2 $$
CREATE PROCEDURE dingd()
BEGIN
DECLARE i INT DEFAULT 4000;
WHILE i < 5000 DO 
INSERT INTO newUid VALUES (i);
SET i =i+1;
END WHILE;
END; $$
DELIMITER ; --改回默认的;

DELIMITER  是MySQL用来定义结束符的,默认情况下结束符是;  因为你要定义存储过程,所以不能让它结束,必须先改成别的结束符号,等定义完后,再改回;

如:DELIMITER $$   就是改成$$是结束符

 

ok  

CREATE PROCEDURE dingd()
BEGIN
DECLARE @i INT;
set @i=4000
WHILE @i < 5000 DO 
INSERT INTO newUid VALUES (@i)
SET @i =@i+1;
END WHILE;
END

这个好像不行