mysql - 如何在mysql中使用while循环调用存储过程

标签 mysql

我的问题听起来可能很蹩脚,但我仍然无法弄清楚这段代码有什么问题。我在sqlyog中做了一个存储过程,现在我想调用它。我已经尝试了几乎所有方法,但它不起作用。

 SET @x=1;
 WHILE @x<=10 DO
 CALL mypro();
 SET @x=@x+1;
 END WHILE;

提前致谢。

最佳答案

IF, WHILE 等流程控制语句需要在函数或存储过程的上下文中执行。如果您希望在循环中执行 mypro(),则该操作本身必须创建为过程。下面我将创建一个名为 call_mypro_x10() 的过程,它在 WHILE 循环中调用您的原始存储过程。

DELIMITER $$
CREATE PROCEDURE call_mypro_x10()
BEGIN
  SET @x = 1;
  WHILE @x <= 10 DO
    CALL mypro();
    SET @x := @x + 1;
  END WHILE;
END$$
DELIMITER ;

然后调用包装另一个的过程:

CALL call_mypro_x10();

请注意,DELIMITER 语句可能并非在所有客户端中都是必需的,并且某些 MySQL 客户端提供了一种不同的方法来指定存储过程和函数定义中所需的备用分隔符。显然 SQLyog supports DELIMITER

an open feature request允许流控制语句作为正常查询执行的一部分。

关于mysql - 如何在mysql中使用while循环调用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15029038/

相关文章:

php - 如何允许用户在 html 页面上更新数据数据库 SQL

内连接中的MySQL复杂日期计算

Mysql - 查询行,其中列显示从同一个表引用的名称

php - AJAX 与 php 的基本用法用于数据库更新和检索

php - 从 MySQL 中删除旧记录的问题

php - 在 PHP/MySQL 中按类别拆分数据集,并对这些类别内的数据集进行计数

mysql - MYsql中的计算字段

java - Hibernate 仅从数据库中检索第一条记录,其余为空

php - 通过仅填写多个输入字段之一来更新 mysqli 数据库

mysql - 可以在 MySQL 中不使用定界符创建过程吗?