MySQL本身是不支持动态游标的,但可以通过(准备语句+视图+静态游标)的方法来近似实现。
一个简单示例:
-- 建立测试表和数据 create table webuser (username varchar(10)); insert into webuser values ('a1'),('a2'),('a3'),('b1'),('b2'),('b3'); commit; -- 建立存储过程 drop procedure if exists dynamic_cursor; delimiter // CREATE PROCEDURE dynamic_cursor (IN p_name varchar(10)) BEGIN DECLARE done INT DEFAULT 0; DECLARE v_username varchar(10); DECLARE cur CURSOR for( SELECT username from webuser_view); DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; DROP VIEW IF EXISTS webuser_view; SET @sqlstr = "CREATE VIEW webuser_view as "; SET @sqlstr = CONCAT(@sqlstr , "SELECT username FROM webuser WHERE username like '", p_name,"%'"); PREPARE stmt FROM @sqlstr; EXECUTE stmt; DEALLOCATE PREPARE stmt; OPEN cur; f_loop:LOOP FETCH cur INTO v_username; IF done THEN LEAVE f_loop; END IF; SELECT v_username; END LOOP f_loop; CLOSE cur; END; // delimiter ; -- 测试 call dynamic_cursor('a');
相关推荐
mysql动态游标示例,通过准备语句、视图和静态游标实现,大家参考使用吧
Mysql游标(循环操作)
MySql存储过程,游标的使用方法,速度极快!
mysql游标使用的整个过程为: 1.创建游标 代码如下:DECLARE calc_bonus CURSOR FOR SELECT id, salary, commission FROM employees; 2.打开游标 代码如下:OPEN calc_bonus; 3.使用游标 代码如下:FETCH calc_bonus ...
带游标的mysql存储过程例子。
Mysql存储过程游标触发器
mysql声明游标的方法: 1、声明变量和游标 declare result varchar(3000); declare flag1 varchar(100); DECLARE done INT DEFAULT FALSE; declare cur1 CURSOR FOR SELECT flag from bmlx; 2、变量赋值 DECLARE ...
Mysql从5.0开始支持存储过程和trigger,游标在递归树结构中非常好用
NULL 博文链接:https://fangyong2006.iteye.com/blog/768291
mysql函数、存储过程、触发器、游标
给我们喜欢用mysql的朋友们更喜欢mysql的理由了,语法上和PL/SQL有差别,不过搞过编程的人都知道,语法不是问题,关键是思想,大致了解语法后,就从变量定义,循环,判断,游标,异常处理这个几个方面详细学习了。...
主要介绍了MySQL使用游标批量进行表操作,包括批量添加索引、批量添加字段等,感兴趣的小伙伴们可以参考一下
[mysql游标的用法及作用] 例子: 当前有三张表A、B、C其中A和B是一对多关系,B和C是一对多关系,现在需要将B中A表的主键存到C中; 常规思路就是将B中查询出来然后通过一个update语句来更新C表就可以了,但是B表中有...
NULL 博文链接:https://yuhuiblog695685688425687986842568269.iteye.com/blog/2424995
详细讲解了mysql中游标的使用方法,希望能对各位有所帮助。
mysql存储过程 多个游标循环(依次执行,非嵌套循环)REPEAT循环。有需要的可自行下载。
本文实例讲述了MySQL游标概念与用法。分享给大家供大家参考,具体如下: 1、游标的概念(Cursor) 一条sql,对应N条资源,取出资源的接口,就是游标,沿着游标,可以一次取出1行。如果开发过安卓的同学应该知道有一...