mysql 如何根据查询出来的结果去循环

panrengui 2011-07-13 04:33:20
我有一张表查出一列数据,现在要根据这列数据的每一行做不同的操作。mysql怎么实现。
如:select names from city
结果集为:‘张三’
‘李四’
‘王五’...

再利用结果作为参数传进另个函数(存储过程)执行。如何把这些结果集像利用数组一样利用
类似c# foreach(string name in names)
{
pro(name);//调用另一个函数
}

的效果。
...全文
2203 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2011-07-13
  • 打赏
  • 举报
回复
[Quote]Example:

CREATE PROCEDURE curdemo()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

OPEN cur1;
OPEN cur2;

REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO test.t3 VALUES (a,b);
ELSE
INSERT INTO test.t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;

CLOSE cur1;
CLOSE cur2;
END

[Quote][/Quote]Example:

CREATE PROCEDURE curdemo()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;
DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

OPEN cur1;
OPEN cur2;

REPEAT
FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO test.t3 VALUES (a,b);
ELSE
INSERT INTO test.t3 VALUES (a,c);
END IF;
END IF;
UNTIL done END REPEAT;

CLOSE cur1;
CLOSE cur2;
END

[/Quote]
ACMAIN_CHM 2011-07-13
  • 打赏
  • 举报
回复
MYSQL中无法传结果集,只能通过临时表,或者你直接在存储过程中进行处理。
panrengui 2011-07-13
  • 打赏
  • 举报
回复
不是很明白,麻烦楼上能详细点说下和给点示例代码吗?谢谢!
wwwwb 2011-07-13
  • 打赏
  • 举报
回复
将结果存入,在SP中调用
OR
打开游标->循环操作
rucypli 2011-07-13
  • 打赏
  • 举报
回复
结果集读到程序中 在程序中循环

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧