我想编写一个 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/