zoukankan      html  css  js  c++  java
  • 《mysql必知必会》读书笔记游标的使用

    游标的使用

      MySQL中游标只能用于存储过程

    创建游标

    CREATE PROCEDURE processorders()
    BEGIN
    DECLARE ordernumbers CURSOR
    FOR
    SELECT order_num FROM orders;
    END;

    打开关闭游标

    CREATE PROCEDURE processorders()
    BEGIN
    DECLARE ordernumbers CURSOR
    FOR
    SELECT order_num FROM orders;
    
    --打开游标
    OPEN ordernumbers;
    --关闭游标
    CLOSE ordernumbers;
    END;

    使用游标数据

    CREATE PROCEDURE processorders()
    BEGIN
    --定义一个逻辑控制临时变量
    DECLARE done BOOLEAN DEFAULT 0;
    
    DECLARE o INT;
    --创建游标
    DECLARE ordernumbers CURSOR
    FOR
    SELECT order_num FROM orders;
    --条件出现时执行的代码:
    --当SQLSTATE '02000'出现时,SET done=1
    --SQLSTATE '02000'是一个未找到条件,当REPEAT由于没有更多行供循环而不能继续循环时,出现这个条件
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
    --打开游标
    OPEN ordernumbers;
    --循环遍历所有行
    REPEAT
    --得到数据
    FETCH ordernumbers INTO o;
    --结束循环
    UNTIL done END REPEAT;
    --关闭游标
    CLOSE ordernumbers;
    END

      注意:DECLARE语句的次序,DECLARE语句有特定的次序,用DECLARE定义局部变量必须在定义任意游标或者句柄之前,而句柄又必须在游标之后定义。
    REPEAT语句的语法更适合对游标进行循环

    综合应用

    -- 创建存储过程
    CREATE PROCEDURE processorders()
    BEGIN
    -- 定义临时变量用于逻辑控制
    DECLARE done BOOLEAN DEFAULT 0;
    -- 临时变量
    DECLARE o INT;
    DECLARE t DECIMAL(8,2)
    -- 创建游标
    DECLARE ordernumbers CURSOR
    FOR
    SELECT order_num FROM orders;
    -- 句柄
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1;
    -- 创建表ordertotals
    CREATE TABLE IF NOT EXISTS ordertotals(
    order_num INT,
    total DECIMAL(8,2)
    );
    -- 打开存储过程
    OPEN ordernumbers;
    -- 游标循环所有行
    REPEAT
    -- 获取数据
    FETCH ordernumbers INTO o;
    -- 将得到的参数o传入之前定义的存储过程ordertotal
    CALL ordertotal(o,1,t);
    -- 将得到的值存入表 ordertotals
    INSERT INTO ordertotals(order_num,total)VALUSE(o,t);
    -- 结束游标循环
    UNTIL done END REPEAT;
    -- 关闭游标
    CLOSE ordernumbers;
    END;
  • 相关阅读:
    django文章对本项目有用的收集
    C#Selenium常用语法功能 很好的文章,值得参考收藏
    C# selenium 高级
    隐士等待与显示等待
    技术不可持续性所面对的挑战及解决方案
    机器人语言特性探索2-正在发生的趋势
    下一个十年计划,兼谈上十年的总结
    机器人语言特性探索1-总体方向
    中国文化
    网络化沟通及协作的人机交互编程语言-机器人语言5(总结)
  • 原文地址:https://www.cnblogs.com/wulaa/p/7768086.html
Copyright © 2011-2022 走看看