关闭

Oracle数据库中游标的使用

标签: Oracle游标的使用
33814人阅读 评论(0) 收藏 举报
分类:

游标的定义:

  • 游标的作用
  • 创建步骤:
    • 定义一个游标
      • 语法:CURSOR cursor_name is select _statement;
    • 打开游标
      • 语法:open cursor_name;
    • 提取数据
      • 使用fetch,fetch关键字会抓取当前行的记录,并将记录指针下移一行。就像JdbC中的ResultSet一样。
      • 语法:fetch cursor_name into variable1,variable2.
      • 游标的一些属性
    • 关闭游标
      • 语法:close cursor_name
  • 示例代码如下:
    • 普通的方法:
      ---游标的使用
      declare
        --定义一个游标,将tab_stu所有数据提取出来
       cursor c_tab_stu is
       select * from tab_stu;
       
       r_tab_stu tab_stu%rowtype;--使用rowtype存储游标数据
       
      begin
        --打开游标
        open c_tab_stu;
        --提取数据
        fetch c_tab_stu into r_tab_stu;
        dbms_output.put_line('stu_id:'||r_tab_stu.stu_id);
        dbms_output.put_line('stu_name:'||r_tab_stu.stu_name);
        dbms_output.put_line('stu_age:'||r_tab_stu.stu_age);
        --关闭游标
        close c_tab_stu;
      end;

    • 使用循环的方法
      --使用循环提取所有记录
      declare
        --定义一个游标,将tab_stu所有数据提取出来
       cursor c_tab_stu is
       select * from tab_stu;
       
       r_tab_stu tab_stu%rowtype;--使用rowtype存储游标数据
       
      begin
        --打开游标
        open c_tab_stu;
        --提取数据
        loop 
           fetch c_tab_stu into r_tab_stu;
           --退出条件,也就是上面图片的属性的值
           exit when c_tab_stu%notfound;
           
           dbms_output.put_line('stu_id:'||r_tab_stu.stu_id);
           dbms_output.put_line('stu_name:'||r_tab_stu.stu_name);
           dbms_output.put_line('stu_age:'||r_tab_stu.stu_age);
           
        end loop;
       
        --关闭游标
        close c_tab_stu;
      end;

    • 使用含有参数的游标和嵌套循环:
      --含有条件的游标
      --实现目标是,查询每个班的学生
      declare
      --先要定义两个游标
      --定义tab_class游标
      cursor s_tab_class is
      select * from tab_class;
      --定义tab_stu游标,但是这里需要一个参数,就是班级的id
      cursor s_tab_stu(v_class_id number) is
      select * from tab_stu where class_id=v_class_id;
      
      --定义两个存储变量
      --定义tab_class
      v_tab_class_rowtype tab_class%rowtype;
      
      --定义tab_stu
      v_tab_stu_rowtype tab_stu%rowtype;
      begin
        --打开游标
        open s_tab_class;
        loop
          --提取数据
          fetch s_tab_class into v_tab_class_rowtype;
          exit when s_tab_class%notfound;
          dbms_output.put_line('班级:'||v_tab_class_rowtype.class_name||'含有');
          --嵌套循环,遍历当前班级的学生
          open s_tab_stu(v_tab_class_rowtype.class_id);
          loop
            fetch s_tab_stu into v_tab_stu_rowtype;
            exit when s_tab_stu%notfound;
            dbms_output.put_line(v_tab_stu_rowtype.stu_name);
          end loop;
          close s_tab_stu;
        end loop;
        close s_tab_class;
      end;

1
0
查看评论

oracle数据库中游标的使用

--游标,查询并打印一个的姓名和薪水 /*1.光标的属性 %found,%notfound */ declare --定义一个光标 cursor cemp is select ename,sal from emp; --为光标定义对应...
  • lwq544
  • lwq544
  • 2018-01-19 16:36
  • 25

ORACLE中游标的使用方法

游标被用的最多的是在存储过程中执行批量修改或是批量删除操作,比如删除一条主表记录之后,可以执行一个存储过程删除该记录对应的明细记录。 或者修改某张表的某个数据后反写另一张表的数据。这在ERP软件开发中是经常用到的,例如出库单实提之后要反写合同上的实提重量等等,这也要靠好的数据库设计来支持。...
  • xiao_jun_0820
  • xiao_jun_0820
  • 2008-09-06 10:53
  • 857

oracle数据库中游标的应用

declare         cursor cur is            select distinct o.ordernumber,p.periodflag,p.status from&...
  • sinat_16425247
  • sinat_16425247
  • 2014-10-29 17:17
  • 338

oracle中游标的用法总结及示例

游标 游标的作用:一般用来遍历结果集。 declare --定义游标    cursor c is            ...
  • o_guolin
  • o_guolin
  • 2017-05-24 00:01
  • 125

sql 游标的基本用法

1. 定义游标定义游标语句的核心是定义了一个游标标识名,并把游标标识名和一个查询语句关联起来。DECLARE语句用于声明游标,它通过SELECT查询定义游标存储的数据集合。语句格式为:DECLARE 游标名称 [INSENSITIVE] [SCROLL]CURSOR FOR select语句[FOR...
  • jack15850798154
  • jack15850798154
  • 2010-03-01 11:14
  • 5049

游标的作用总结

概念:游标是数据库系统用来供用户标志一条指定记录的指针,它可以是变动的,但每次只指向一条记录。使用示例: IF EXISTS(SELECT *FROM sysobjects WHERE name=’sp_ContestSubmit’) DROP PROC sp_ContestSubmit...
  • lsh2007
  • lsh2007
  • 2016-11-25 14:53
  • 144

oracle存储过程中游标的使用

oracle procedures
  • learningITwell
  • learningITwell
  • 2017-06-25 11:45
  • 147

MongoDB中游标的使用

MongoDB中游标的使用
  • zt_star
  • zt_star
  • 2017-06-21 09:53
  • 140

sql中游标的使用

sql中将查询到的结果集进行循环,然后取出每条数据中指定的字段,赋值给指定的变量
  • bodilove
  • bodilove
  • 2015-11-13 14:51
  • 357

PROC--oracle中游标的使用

Oracle中的游标 Oracle使用两种游标: 显式游标和隐式游标.  不管语句返回多少条记录, Oracle为 每条使用的SQL语句隐式地定义一个游标. Oracle 为每个DELETE , UPDATE, INSERT 等SQL命令隐式地声明游标. 用户声明并使用显式游标处理...
  • u012960623
  • u012960623
  • 2014-04-16 12:06
  • 1964
    欢迎关注个人微信号
      欢迎关注微信账号:在路上的coder .每天一篇java相关或互联网相关的文章




    个人资料
    • 访问:826308次
    • 积分:2959
    • 等级:
    • 排名:第14098名
    • 原创:87篇
    • 转载:4篇
    • 译文:0篇
    • 评论:26条
    资源分享地址
    个人博客地址
    博客专栏
    最新评论