美文网首页
mysql 存储过程 游标 游标嵌套

mysql 存储过程 游标 游标嵌套

作者: AlanSun2 | 来源:发表于2019-03-20 18:34 被阅读0次
CREATE PROCEDURE `NewProc`(INOUT `eter` tinyint)
BEGIN
    #Routine body goes here...
    DECLARE fId int(11);
    DECLARE subStatus int(1);
    -- 遍历数据结束标志
    DECLARE done INT DEFAULT FALSE;

    DECLARE cursor_name CURSOR FOR (SELECT f_id from order_info where `status` is null);

    DECLARE orderSub CURSOR FOR SELECT status from order_sub_info where f_id = fId;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;

    OPEN cursor_name;
    myloop: LOOP
        -- 如果有多个返回值,则这里就跟多个变量,例如:FETCH cursor_name INTO fId orderId;
        FETCH cursor_name INTO fId;
        IF done THEN
        LEAVE myloop;
        END IF;
        -- 这里做你想做的循环的事件
        
        OPEN orderSub;
        orderLoop: LOOP
            FETCH orderSub INTO subStatus;
            IF done THEN
            LEAVE orderLoop;
            END IF;
            -- 这里做你想做的循环的事件

        END LOOP orderLoop;
        CLOSE orderSub;
        -- 这里为什么要把 done 设置为 false? 
        -- 因为嵌套中的循环结束后 done = true,如果不设置为 false 会导致外层循环只执行一边
        SET done = FALSE;
    END Loop myloop;
    CLOSE cursor_name;
END;;

如何把多列的查询结果设置到变量中?

示例:

CREATE DEFINER=`root`@`%` PROCEDURE `testddd`(IN inpa INT(11), OUT ida INT(11), OUT paradd VARCHAR(10), OUT df INT(11))
BEGIN
    SELECT id, param1 INTO ida, paradd FROM test WHERE id = 2;
    SET df = inpa;
END$$

在存储过程中我觉得不要使用用户变量,除非一后面要使用这个变量。

存储过程中的传参

传参可以使用 IN,OUT,INOUT。所有定义的参数(无论入参还是出参)都必须传,否则会报错。
IN:表示入参,可以是变量(可以传空)或固定值
OUT:表示出参,必须为一个定义的变量(一般使用用户变量(@开头定义的变量,同一个 session 有效))
INOUT:即可以做入参可以做出参

相关文章

  • mysql 存储过程 游标 游标嵌套

    如何把多列的查询结果设置到变量中? 示例: 在存储过程中我觉得不要使用用户变量,除非一后面要使用这个变量。 存储过...

  • 学习笔记

    python 对线程 python MySQLDB mysql 游标 存储过程

  • MySQL 游标的基本用法

    MySQL游标只能用于存储过程。使用游标的步骤:①在能够使用游标前,必须声明它。这个过程实际上没有检索数据,它只是...

  • mysql存储过程游标的嵌套循环

    假设你已知 数据库表、存储过程的创建基本语法 存储过程游标的使用语法 关键技巧 begin end语法代表的含义 示例

  • SQL第21课:使用游标

    mysql 游标的使用 游标是什么?? 游标是一个存储在MySQL服务器上的数据库查询,它不是一条select语句...

  • MySql 存储过程与游标

    有时候,需要在检索出来的行中前进或后退一行或多行。这就是使用游标的烟瘾。游标是一个存储在MySQL服务器上的数据库...

  • mysql 存储过程之游标

    游标按我的理解就是用在sql编程中对查询结果集的解析,类比jdbc中的resultset对象。FETCH 一行游标...

  • Oracle 存储过程学习笔记

    1、存储过程简单实例 2.游标实现方式 显式游标实现方式(可多值) 隐式游标(可以实现查询多值) 带有参数的游标(...

  • 存储过程--游标

    存储过程 定义:简单来说就是一组sql语句集,功能强大,类似于Java中的方法。特性有输入输出参数、模块化,封装,...

  • SQL SERVER 单游标存储过程

    SQL SERVER 单游标存储过程模板

网友评论

      本文标题:mysql 存储过程 游标 游标嵌套

      本文链接:https://www.haomeiwen.com/subject/xeitvqtx.html