DELIMITER $$DROP PROCEDURE IF EXISTS `data_test`.`gps`$$CREATE DEFINER=`root`@`localhost` PROCEDURE `gps`()
BEGIN
DECLARE i int DEFAULT 1;
DECLARE j int DEFAULT 1;
declare k datetime default '2011-01-01 00:00:00';
WHILE j<=100 DO
while i<=86400 do
INSERT INTO T_devdata_gps_20110101(f_devid,f_longitude,f_latitude,f_speed,f_direction,f_gpstime,f_instime)
VALUES(CONCAT('f_devid',j),concat('f_longitude',j+0.2),concat('f_latitude',j+0.3),concat('f_speed',j+1),concat('f_direction',j+4),k,k);
set k = (SELECT DATE_ADD(k,INTERVAL 1 SECOND));
set i = i+1;
end while;
set j = j+1;
set k = '2011-01-01 00:00:00';
END WHILE;
END$$
这个是我写的mysql的存储过程,我的意思是想让他进行两重循环,但是外层的循环没有执行,这个为什么啊,很急,帮帮我!
'截至2011-02-07 23:13:59 用户结帖率0.00% 当您的问题得到解答后请及时结贴.
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html8、如何给分和结贴?
http://community.csdn.net/Help/HelpCenter.htm#结帖
CREATE DEFINER=`root`@`localhost` PROCEDURE `gps`()
BEGIN
DECLARE i int DEFAULT 1;
DECLARE j int DEFAULT 1;
declare k datetime default '2011-01-01 00:00:00';
WHILE j<=100 DO
SET I=1; # 需要在这里给内层循环的值归位,要么I全局一次后就是86400了,下面就不再循环了。楼主看到的其实是内层循环只做了一次,外层循环是正常的。
while i<=86400 do
INSERT INTO T_devdata_gps_20110101(f_devid,f_longitude,f_latitude,f_speed,f_direction,f_gpstime,f_instime)
VALUES(CONCAT('f_devid',j),concat('f_longitude',j+0.2),concat('f_latitude',j+0.3),concat('f_speed',j+1),concat('f_direction',j+4),k,k);
set k = (SELECT DATE_ADD(k,INTERVAL 1 SECOND));
set i = i+1;
end while;
set j = j+1;
set k = '2011-01-01 00:00:00';
END WHILE;
END$$
BEGIN
DECLARE i int DEFAULT 1;
DECLARE j int DEFAULT 1;
declare k datetime default '2011-01-01 00:00:00';
-- j=1这里也初始化一下,当然这个没有必要,因为在最外层,但是写出来就是告诉楼主,
-- 多层循环中,循环变量在循环之前都需要重新置为初始值。
set j=1;
WHILE j<=100 DO
-- 在每一层开始循环的时候,都需要重新置为初始值,不然i就为86400了,你只执行了j=1这个情况一遍而已。
set i=1;
while i<=86400 do
INSERT INTO T_devdata_gps_20110101
(f_devid,f_longitude,f_latitude,f_speed,f_direction,f_gpstime,f_instime)
VALUES(CONCAT('f_devid',j),concat('f_longitude',j+0.2),
concat('f_latitude',j+0.3),concat('f_speed',j+1),
concat('f_direction',j+4),k,k);
set k = (SELECT DATE_ADD(k,INTERVAL 1 SECOND));
set i = i+1;
end while;
set j = j+1;
set k = '2011-01-01 00:00:00';
END WHILE;
END$$
其语法解释引擎,至少应向通用语言的语法学习吧,最好再加上点面向对象。
路还很长~~