【发布时间】:2015-09-03 05:57:33
【问题描述】:
如何在不使用存储过程的情况下编写一个在 MySql 中运行 n 次的循环。
这就是我使用存储过程的方式:
DELIMITER $$
DROP PROCEDURE IF EXISTS test$$
CREATE PROCEDURE test()
BEGIN
DECLARE count INT DEFAULT 0;
WHILE count < 10 DO
/**Sql statement**/
SET count = count + 1;
END WHILE;
END$$
DELIMITER ;
然后我以这种方式执行我的程序:
call test();
如果我删除存储过程并运行正常查询,那么它会失败并出现以下错误:
1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 'DECLARE count INT DEFAULT 0; 附近使用的正确语法; WHILE count
我通过互联网寻找解决方案,但没有运气。
基于 cmets 编辑:
上面的存储过程完全符合我的要求:循环 10 次并执行我的 sql 语句。现在我想在不使用存储过程的情况下完成同样的事情。类似的东西:
DECLARE count INT DEFAULT 0;
WHILE count < 10 DO
/**Sql statement**/
SET count = count + 1;
END WHILE;
【问题讨论】:
-
我对mysql一无所知,但不能是因为count in a reserved关键字吗?
-
@HoneyBadger 我尝试使用不同的名称,它不起作用
-
不清楚您的要求。你有你的存储过程,你调用你的过程。之后您删除了该过程并像
SELECT 10;一样运行正常查询?如果是这样,您将永远不会收到您发布的错误消息。因此,请向我们展示您尝试运行的查询。 -
我明白,它并没有真正回答这个问题,但你的主要查询是做什么的?也许可以将其重写为一个没有显式循环的查询。
-
@JuanCarlosOropeza 我的 sql 语句是一个基本的 INSERT 查询,比如
INSERT INTO table_name(col1,col2,col3) VALUES("val1","val2",count)