• 《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;
  • 相关阅读:
    Atitit  atiMail atiDns新特性 v2  q39
    Atitit.java jar hell解决方案Djava.ext.dirs in ide envi..
    砍价大法
    DWR学习
    什么是WEB 2.0
    XHTML 1.0 Tags 参考
    web.config文件遇到的错误
    JDBC教程之PreparedStatement
    符合W3C标准的target=_blank形式
    dwr 登录实现 (入门知识)
  • 原文地址:https://www.cnblogs.com/wulaa/p/7768086.html
Copyright © 2020-2023  润新知