测试表级;
复制代码代码如下所示:
创建表test.level(name varchar(20));

更多插入数据;

代码

初始化
复制代码代码如下所示:
如果程序存在 / / usecursor滴

设置存储过程创建
复制代码代码如下所示:
创建程序usecursor()

开始

局部变量的定义声明
复制代码代码如下所示:
声明tmpname varchar(20)违约;
声明allname varchar(255)违约;
声明cur1光标选择的名字从test.level;

异常后捕获mysql游标

并设置循环使用可变tmpname跳出循环空。
复制代码代码如下所示:
声明继续tmpname = null处理'02000'set SQLSTATE;

打开游标
复制代码代码如下所示:
打开cur1;

光标向下移动一步。
复制代码代码如下所示:
取cur1为tmpname;

循环体显然添加并使用mysql游标查询的名称;该号码被分隔。
复制代码代码如下所示:
(tmpname而不为空)做
集tmpname = concat(tmpname,;);
集allname = concat(allname,tmpname);

光标向下移动一步。
复制代码代码如下所示:
取cur1为tmpname;

结束循环体:
复制代码代码如下所示:
结束的时候;

关闭游标
复制代码代码如下所示:
近cur1;

Select data
复制代码代码如下所示:
选择allname;

结束存储过程
复制代码代码如下所示:
结束;

调用存储过程:
复制代码代码如下所示:
电话(usecursor) / /

运行结果:
复制代码代码如下所示:
MySQL >呼叫(usecursor) / /

-------------------------------------- + +

| allname |

-------------------------------------- + +

| F1;C3;C6;C5;C2;C4;C1;F1;F2 F3 F4 F5;;;;|

-------------------------------------- + +

1行集(0秒)

循环游标:
复制代码代码如下所示:
$分隔符

如果出口下降过程cursor_example美元
创建程序cursor_example()
读取SQL数据
开始
声明l_employee_id int;
声明l_salary数值(8,2);
声明l_department_id int;
声明默认值为0;
声明cur1光标选择employee_id,department_id员工工资;
声明未找到的已完成集= 1的继续处理程序;

打开cur1;
emp_loop:环
取cur1为l_employee_id,l_salary,l_department_id;
如果做= 1然后
离开emp_loop;
END IF;
循环结束emp_loop;
近cur1;
结束美元
分隔符;

重复循环游标:
复制代码代码如下所示:
创建过程的过程*
分隔符
如果存在测试,则删除过程
创建过程测试()
开始
声明默认值为0;
声明一个varchar(200)违约;
宣布C varchar(200)违约;

声明游标光标选择fusername从uchome_friend;
声明未找到的已完成集= 1的继续处理程序;

打开游标;

重复
把游标到;
如果不这样做
C = concat(C,A); / * * /串在一起
如果结束;

直到完成结束重复;

关闭游标;

选择C;
结束
分隔符;

复制代码代码如下所示:
创建过程的过程*
分隔符
如果存在测试,则删除过程
创建过程测试()
开始
声明默认值为0;
DECLARE a VARCHAR (200) DEFAULT '';
宣布C varchar(200)违约;

声明游标光标选择fusername从uchome_friend;
声明未找到的已完成集= 1的继续处理程序;

打开游标;

重复
把游标到;
如果不这样做
C = concat(C,A); / * * /串在一起
最后如果;

直到完成结束重复;

关闭游标;

选择C;
结束
分隔符;