mysql 存储过程中利用游标循环结果集
2015-01-30 15:47
423 查看
<p>有这么个需求</p><p> </p><p>topic表中有id 和comments数量</p><p> </p><p>commemt表中有 topicid 和id</p><p> 由于历史原因,【删除评论表中时未同步删除topic中评论数量的值】,</p><p>所以要求一条语句执行更新。(当然用php写个foreach也可以)。 <pre name="code" class="sql">drop procedure if exists add_demo; # 创建存储过程 add_test CREATE PROCEDURE add_demo() BEGIN #定义 变量 #a 评论数量 #b id话题 DECLARE a int; DECLARE b int; #此变可有可无,为了给个该存储函数执行成功后给个提示,运行下便知道 DECLARE str VARCHAR(300); DECLARE x int default 123; #这个用于处理游标到达最后一行的情况 DECLARE s int default 0; #声明游标cursor_name(cursor_name是个多行结果集) DECLARE cursor_name CURSOR FOR select count(topicid), topicid from t_comment group by topicid; #设置一个终止标记 DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s=1; set str = "--"; #打开游标 OPEN cursor_name; #获取游标当前指针的记录,读取一行数据并传给变量a,b fetch cursor_name into a,b; #开始循环,判断是否游标已经到达了最后作为循环条件 while s <> 1 do set str = concat(str,b); update t_topic set comments =a where id =b; #读取下一行的数据 fetch cursor_name into a,b; end while; #关闭游标 CLOSE cursor_name ; select str; set @aa='12'; select @aa; #语句执行结束 END; #调用存储函数add_test CALL add_demo()
当然也可以利用临时表来创建,
感谢波波的分享。
相关文章推荐
- mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
- mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
- mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
- MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等
- MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等
- mysql 存储过程示例,有参有返回值,使用到了判断,循环,游标,临时表,事务
- Mysql存储过程循环内嵌套使用游标示例代码
- MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等
- mysql存储过程用游标解决返回的结果级并拼装字符
- MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等
- 利用mysql游标循环结果集
- Mysql存储过程游标循环操作
- MySQL存储过程中游标循环的跳出和继续操作示例
- MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等
- Mysql存储过程循环内嵌套使用游标示例
- Mysql存储过程循环内嵌套使用游标示例代码
- MySQL存储过程例子,包含事务,输出参数,嵌套调用,游标,循环等等
- MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等
- MySQL存储过程例子,包含事务,参数,嵌套调用,游标,循环等(转)
- 如何在mysql存储过程中处理select语句返回的多行结果(用游标)