数据库教程:基于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()//

运行结果:
代码如下:
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游标概念与用法详解

标签: 游标 SQL

深入MySQL存储引擎比较的详解

基于mssql导mysql遇到的问题

上述就是数据库技术:基于MySQL游标的具体使用详解分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/910701.html

(0)
上一篇 2021年10月24日
下一篇 2021年10月24日

精彩推荐