MySQL游标操作指南
作者:网络转载 发布时间:[ 2015/4/2 11:47:30 ] 推荐标签:数据库 MySQL 游标
本篇文章是对MySQL游标的具体使用进行了详细的分析介绍,需要的朋友参考下
测试表level
代码如下:
createtabletest.level(namevarchar(20));
再insert些数据;
初始化
代码如下:
dropprocedureifexistsuseCursor//
建立存储过程create
代码如下:
CREATEPROCEDUREuseCursor()
BEGIN
局部变量的定义declare
代码如下:
declaretmpNamevarchar(20)default'';
declareallNamevarchar(255)default'';
declarecur1CURSORFORSELECTnameFROMtest.level;
MySQL游标异常后捕捉
并设置循环使用变量tmpname为null跳出循环。
代码如下:
declareCONTINUEHANDLERFORSQLSTATE'02000'SETtmpname=null;
开游标
代码如下:
OPENcur1;
游标向下走一步
代码如下:
FETCHcur1INTOtmpName;
循环体这很明显把MySQL游标查询出的name都加起并用;号隔开
代码如下:
WHILE(tmpnameisnotnull)DO
settmpName=CONCAT(tmpName,";");
setallName=CONCAT(allName,tmpName);
游标向下走一步
代码如下:
FETCHcur1INTOtmpName;
结束循环体:
代码如下:
ENDWHILE;
关闭游标
代码如下:
CLOSEcur1;
选择数据
代码如下:
selectallName;
结束存储过程
代码如下:
END;//
调用存储过程:
代码如下:
calluseCursor()//
loop循环游标:
代码如下:
DELIMITER$$
DROPPROCEDUREIFEXITScursor_example$$
CREATEPROCEDUREcursor_example()
READSSQLDATA
BEGIN
DECLAREl_employee_idINT;
DECLAREl_salaryNUMERIC(8,2);
DECLAREl_department_idINT;
DECLAREdoneINTDEFAULT0;
DECLAREcur1CURSORFORSELECTemployee_id,salary,department_idFROMemployees;
DECLARECONTINUEHANDLERFORNOTFOUNDSETdone=1;
OPENcur1;
emp_loop:LOOP
FETCHcur1INTOl_employee_id,l_salary,l_department_id;
IFdone=1THEN
LEAVEemp_loop;
ENDIF;
ENDLOOPemp_loop;
CLOSEcur1;
END$$
DELIMITER;

sales@spasvo.com