• oracle 游标


    1.用for遍历游标,不必打开、关闭游标。for自动控制。

    创建使用游标的存储过程,

    create or replace procedure pro_dff_cursor(sex1 varchar)

    as

    --定义游标

    cursor test_cursor is

    select id,name,age,sex from table where sex = sex1;

    cur test_cursor %rowtype; --cur为结果集的一条数据,跟java中list的对象相似,这里定义了游标的类型。List<Object>

    begin

     for cur in test_cursor loop

     exit when test_cursor %notfound;

     dbms_output.print_line('id:'||cur.id||',name:'||cur.name||',age:'||cur.age||',sex:'||cur.sex);

     end loop;

    end;

    ===========================================================================================

      上边,首先看Cursor test_cursor is 这一行,它的意思是定义一个游标,test_cursor 为你要定义的名字,而is 后边是一个sql,也就是说当前这个sql的查询结果,赋值给游标test_cursor 。
      然后,往下,接着cur test_cursor%rowtype ,这个是定义了一个类型,而这个类型,即是游标test_cursor 的返回结果类型,类型的名字为cur 。有点类似于java语言 中List 集合中的一个泛型 。
      另外,关于for 是一个循环的写法,for cur in test_cursor ,即,从游标test_cursor 中取出一个结果cur 。
      还有,注意,loop 和end loop 这是一个循环的开始标志和结束标志,但它俩兄弟是一个很执着的循环,如果没有定义退出条件,永远不会退出的,所以在上边的循环里边,有了退出条件exit when test_cursor%notfound; ,即当游标test_cursor 中没有数据了,就退出循环。
      当然loop 循环的退出,发生下边的情况,才能退出:

      有exit,并满足条件后退出。
      loop中抛出了异常。
      存在goto 标识。

    2.上述红字部分替换循环方式

    a.Fetch 循环

    open test_cursor; --需要明确打开游标

    loop

     fetch test_cursor into cur;

     exit when test_cursor%notfound;

     dbms_output.print_line('id:'||cur.id||',name:'||cur.name||',age:'||cur.age||',sex:'||cur.sex); --循环体

    end loop;

    close test_cursor; --关闭游标

    b.While循环

    open test_cursor;

    while test_cursor%notfound loop 

    fetch test_cursor into cur ;

    dbms_output.print_line('id:'||cur.id||',name:'||cur.name||',age:'||cur.age||',sex:'||cur.sex); --循环体

    close test_cursor;

  • 相关阅读:
    uva 12169 Disgruntled Judge
    uva 11582 Colossal Fibonacci Numbers!
    ACdream 1073
    ACdream 1061 郭式树
    《构建之法》读书笔记
    南阳oj 素数求和问题
    hdoj Problem-1007 A hard puzzle
    程序员不得不知的 Navicat 实用工具
    Beyond Compare怎么对比图片差异
    教您用Beyond Compare比较十六进制文件
  • 原文地址:https://www.cnblogs.com/oath-keeper/p/10374948.html
Copyright © 2020-2023  润新知