zoukankan      html  css  js  c++  java
  • 游标学习


    MySql检索操作返回一组称为结果集的行。这组返回的行都是与sql语句相匹配的行(0行或多行)。用简单的select语句,例如,没有办法得到第一行,下一行或前10行。也不存在每次一行地处理所有的行简单办法(相对于成批的处理他们)。


    目前游标只用于存储过程或函数里

    一、声明游标
    declare 游标名 cursor for 相应的select语句


    二、打开和关闭游标
    OPEN 游标名r;

    CLOSE 游标名;

    例1:
    create procedure proce_cursor_demo()
    BEGIN
        -- 声明变量
        declare o int;
        -- 声明游标
        declare cur_user CURSOR
        FOR
        select age from `user`;
        OPEN cur_user;
        FETCH cur_user INTO o;
        CLOSE cur_user;
    
    END


    FETCH用来检索当前行的age列(将自动从第一行开始)赋值到一个名为o的局部声明的变量中。

    declare语句的次序:1、局部变量 2、游标 3、句柄。 不遵守此顺序将产生错误。


    例2:

    create procedure proce_cursor_demo2()
    BEGIN
        -- 声明变量 
        declare done boolean default 0;
        declare i int;
        declare a int;
    
        -- 声明游标
        declare cur_get_age_for_id CURSOR
        FOR
        SELECT id FROM `user`;
    
        -- 声明句柄
        declare continue handler  for SQLSTATE '02000' set done = 1;
    
        -- 创建用来保存id和age的表
        create table if not exists u_age
            (uid int,age int);
            
        -- open the curson
        OPEN cur_get_age_for_id;
        
        -- 遍历所有行
        REPEAT
            -- 得到id
            FETCH cur_get_age_for_id INTO i;
            -- 调用外部存储过程 得到age
            CALL proce_age_for_id(i,0,a);
            -- 插入到u_age表
            insert into u_age(uid,age) VALUES (i,a);
        
        -- 结束遍历
        UNTIL done END REPEAT;
    
        -- close the curson
        CLOSE cur_get_age_for_id;
        
    END;
    
    -- 执行函数
    CALL proce_cursor_demo2();

    理解:
    REPEAT 是循环用的
    结束条件是 UNTIL done END REPEAT; (done 是上面定义的布尔变量。为真时结束循环)


    declare continue handler for SQLSTATE '02000' set done = 1;
    这条名句定义了一个chontinue handler ,当SQLSTATE '02000'出现时,set done = 1就执行。(SQLSTATE '02000'是未找到条件,当数据遍历到末尾就出现)

  • 相关阅读:
    ie标题修改
    求两个数的商在单元格内设置公示显示#ERROR
    明细报表汇总使用说明
    学习了GDI+ 做了个简单的折线图。
    C#读写文本文件,字符串截取
    C#winform去除btn按钮的边框
    观江南大学设计学院2011届迎新晚会有感
    c++的一个程序源码记录
    c#中委托的概念一个总结demo
    《平凡的世界》中田晓霞和孙少平的爱情
  • 原文地址:https://www.cnblogs.com/longhs/p/4338221.html
Copyright © 2011-2022 走看看