我们如何在MySQL中使用we循环?我的测试脚本:
BEGIN
SELECT 0 INTO @n;
WHILE @n < 10 DO
SELECT @n;
SET @n := @n +1;
END WHILE;
END;但它有语法错误。我正在使用标准查询窗口中的SQLyog客户机运行这个循环。语法错误的形式如下:
错误代码: 1064 您的SQL语法有错误;请检查与MySQL服务器版本相对应的手册,以获得正确的语法。
我还尝试使用https://dev.mysql.com/doc/refman/5.6/en/while.html提供的work循环示例,但它仍然没有工作。
剧本的哪一部分是错的?(使用MySQL 5.6.)
我试图对一些数据做一个6个月的移动平均值,所以我希望一个while循环能够通过循环的每一次迭代将“新的”6个月的平均值附加到“旧的”6个月的平均值上。
发布于 2015-07-04 03:37:46
如果没有存储过程,就不能在SQL编辑器中执行for循环。我用MySQL Workbench做这个。
快速存储过程应该完成以下工作:
DROP PROCEDURE IF EXISTS proc_loop_test;
CREATE PROCEDURE proc_loop_test()
BEGIN
DECLARE int_val INT DEFAULT 0;
test_loop : LOOP
IF (int_val = 10) THEN
LEAVE test_loop;
END IF;
SET int_val = int_val +1;
SELECT int_val;
END LOOP;
END;发布于 2019-11-19 16:48:45
尽管从官方文档和其他堆栈交换站点的答案中找到了复制粘贴示例,但我还是遇到了mysql工作台中令人困惑的语法错误抱怨。如果您有一个被分解成多行的长查询(为了提高人的可读性),那么您可能需要使用分隔符来使机器更清楚地知道哪些换行符是“有意义的”。
mysql工作台为我同步接受的过程中的多行查询(尽管是编辑的)的一个示例。
DELIMITER //
DROP PROCEDURE IF EXISTS methodLoop;
CREATE PROCEDURE methodLoop(p1 INT)
BEGIN
label1: LOOP
SET p1 = p1-1;
IF p1 > 0 THEN
SELECT *
FROM Table1 foo
LEFT JOIN Table 2 bar ON foo.id = bar.id;
END IF;
END LOOP label1;
END//
DELIMITER ;
call methodLoop(10);https://stackoverflow.com/questions/52412225/mysql-create-insert-procedure-statement-incomplete
https://dba.stackexchange.com/questions/62812
复制相似问题