学习mysql存储过程中的循环操作

发布时间:2019-08-28编辑:脚本学堂
本文介绍的内容是:使用mysql的光标来执行循环操作,详见以下代码:

本文介绍的内容是:使用mysql光标来执行循环操作,详见以下代码:

复制代码 代码如下:
DROP PROCEDURE IF EXISTS sp_opr;
CREATE PROCEDURE sp_opr()
BEGIN

    /* 定义变量一 */
    DECLARE _Err_Code CHAR(8) DEFAULT '';
    /* 定义变量二 */
    DECLARE _Cnt INT DEFAULT 0;
   
    /* 光标 */
    DECLARE _done INT DEFAULT 0;
    DECLARE _Cur_Error CURSOR FOR
        SELECT col1,col2 FROM table WHERE rec_dd=ADDDATE(CURDATE(),-1);
    DECLARE continue HANDLER FOR SQLSTATE '02000' SET _done = 1;
   
    /* 打开光标 */
    OPEN _Cur_Error;
        /* 循环执行 */
        REPEAT
          FETCH _Cur_Error INTO _Err_Code, _Cnt; --读取下一行
         
          IF NOT _done THEN
          -- 这里的代码被循环执行(这里可以使用上面读取的值)
          END IF;
         
        UNTIL _done END REPEAT; --当_done=1时退出被循
       
    /*关闭光标*/
    CLOSE _Cur_Error;

END;