mysql - MySQL中基于SQL IN的Loop in函数

标签 mysql sql for-loop

我想编写一个 SQL 函数,它遍历从 SQL 查询返回的记录列表(仅整数 ID),并使用这些参数执行另一个函数:

  • 我不想手动枚举所有 id,即我希望首先通过 SQL 查询返回它们,因此 SET @recordlist = (SELECT ..),
  • 我想要一个循环,为记录列表的每个元素执行另一个函数,即我希望能够在 FOR 语句中访问记录列表中的每个元素

它应该看起来像:

SET @recordlist = (SELECT ..)

For every element e in the recordlist

Execute function f(e)

最佳答案

使用带有循环游标的例程来实现此目的!

   delimiter//
    create procedure get_balance()
    begin
    DECLARE var1;
    DECLARE flag INT DEFAULT 0;
    .......
       declare tcursor for select col1,col2.... from table;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = 1;
    open tcursor;
    myloop:LOOP
    fetch tcursor into col1,col2...;
    if flag = 1 then
    -- function here 
    call funtion;
    leave myloop;
    end if
    end loop myloop;
    close tcursor;
    end//
    delimiter;

关于mysql - MySQL中基于SQL IN的Loop in函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22690174/

相关文章:

mysql - 在范围条件中使用值时出错

php - 寻找我的数组以表格格式显示结果

mysql - "%"其中没有字母 'a' , 'o' 和 'u'

JavaScript 循环生成具有不同值的 JavaScript 函数

PHP 表单似乎并不总是写入数据库

mysql - 从 heroku 提取数据库失败并出现 Encoding::CompatibilityError

mysql - 我应该使用 InnoDB 将主键添加到辅助索引吗?

mysql - SQL统计一个数据库中所有表的列数

javascript - 我不明白数组是如何工作的

loops - 使用 2 个 for 循环时无法让我的 f# 工作