测试表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()//
运行结果:
代码如下:
mysql>calluseCursor()//
+————————————–+
|allName |
+————————————–+
|f1;c3;c6;c5;c2;c4;c1;f1;f3;f4;f2;f5;|
+————————————–+
1rowinset(0.00sec)
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;
repeat循环游标:
代码如下:
/*创建过程*/
DELIMITER//
DROPPROCEDUREIFEXISTStest//
CREATEPROCEDUREtest()
BEGIN
DECLAREdoneINTDEFAULT0;
DECLAREaVARCHAR(200)DEFAULT”;
DECLAREcVARCHAR(200)DEFAULT”;
DECLAREmycursorCURSORFORSELECT fusernameFROMuchome_friend;
DECLARECONTINUEHANDLERFORNOTFOUNDSETdone=1;
OPENmycursor;
REPEAT
FETCHmycursorINTOa;
IFNOTdoneTHEN
SETc=CONCAT(c,a);/*字符串相加*/
ENDIF;
UNTILdoneENDREPEAT;
CLOSEmycursor;
SELECTc;
END//
DELIMITER;
代码如下:
/*创建过程*/
DELIMITER//
DROPPROCEDUREIFEXISTStest//
CREATEPROCEDUREtest()
BEGIN
DECLAREdoneINTDEFAULT0;
DECLAREaVARCHAR(200)DEFAULT”;
DECLAREcVARCHAR(200)DEFAULT”;
DECLAREmycursorCURSORFORSELECT fusernameFROMuchome_friend;
DECLARECONTINUEHANDLERFORNOTFOUNDSETdone=1;
OPENmycursor;
REPEAT
FETCHmycursorINTOa;
IFNOTdoneTHEN
SETc=CONCAT(c,a);/*字符串相加*/
ENDIF;
UNTILdoneENDREPEAT;
CLOSEmycursor;
SELECTc;
END//
DELIMITER;
您可能感兴趣的文章:mysql存储过程游标循环使用介绍Mysql的游标的定义使用及关闭深入分析MySQL存储过程中游标循环的跳出和继续操作示例Mysql存储过程循环内嵌套使用游标示例代码mysql存储过程中使用游标的实例mysql动态游标学习(mysql存储过程游标)MySQL使用游标批量处理进行表操作mysql的存储过程、游标、事务实例详解MySql游标的使用实例Mysql存储过程中游标的用法实例MySQL游标概念与用法详解
深入MySQL存储引擎比较的详解
基于mssql导mysql遇到的问题
上述就是数据库技术:基于MySQL游标的具体使用详解分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/dtteaching/910701.html