美文网首页
Oracle游标

Oracle游标

作者: Yinawake | 来源:发表于2019-07-30 17:14 被阅读0次

Oracle游标的关键子CURSOR,用来定义查询出来的数据集,把内存中的数据通过游标一条一条的循环取出。

游标种类

  1. 显示游标
    游标使用之前必须先声明,一般对查询语句结果定义游标,然后通过打开游标循环取出结果集。
  2. 隐式游标
    指PL/SQL管理,开发者不能自己控制,只能获得它的属性。

显示游标

开发中比较常用

  1. 声明游标
declare cursor cursor_name is select * from xxx;
  1. 打开游标
open cursor_name;
  1. 读取游标中的数据
fetch curos_name into record(变量)
  1. 关闭游标
close cursor_name;

实例

declare
  --定义游标
  cursor cur_xsjbxx is
    select * from stuinfo order by stuid;
  --定义记录变量  
  ls_curinfo cur_xsjbxx%rowtype;
begin
  open cur_xsjbxx;--打开游标
  loop
    FETCH cur_xsjbxx
      INTO ls_curinfo;--获取记录值
    EXIT WHEN cur_xsjbxx%NOTFOUND;
   
    dbms_output.put_line('学号:' || ls_curinfo.stuid || ',姓名:' ||
                         ls_curinfo.STUNAME);
  end loop;
  close cur_xsjbxx;--关闭游标
end;

解析:配合loop语句来循环打印结果,通过游标变量%NOTFOUND来获取游标的结束,跳出loop

显式游标的属性

  1. %NOTFOUND.表示游标获是否还能提取数据。没有数据时返回TRUE,有数据时返回FALSE
  2. %FOUND。与%NOTFOUND相反
  3. %ISOPEN。判断游标是否打开
  4. %ROWCOUNT。表示游标FETCH INTO获取了多少记录数。

实例

declare
  --定义游标
  cursor cur_xsjbxx is
    select * from stuinfo order by stuid;
  --定义记录变量  
  ls_curinfo cur_xsjbxx%rowtype;
begin
  open cur_xsjbxx;--打开游标
  loop
    FETCH cur_xsjbxx
      INTO ls_curinfo;--获取记录值
    EXIT WHEN cur_xsjbxx%NOTFOUND;
    --利用游标计数器打印学生个数
    dbms_output.put('%rowcount计数器,第'||cur_xsjbxx%rowcount||'位学生,');
    dbms_output.put_line('学号:' || ls_curinfo.stuid || ',姓名:' ||
                         ls_curinfo.STUNAME);
  end loop;
  close cur_xsjbxx;--关闭游标
end;

隐式游标

实例

declare
  ls_xsjbxx stuinfo%rowtype;
begin
  --查询学生信息
  select * into ls_xsjbxx from stuinfo t where t.stuid = 'SC201801001';
  if sql%found then
    dbms_output.put_line('学号:' || ls_xsjbxx.stuid || ',姓名:' ||
                         ls_xsjbxx.stuname);
  end if;
 
  --查询学生信息(不存在的学生)
  select * into ls_xsjbxx from stuinfo t where t.stuid = 'SC201901001';
  if sql%found then
    dbms_output.put_line('学号:' || ls_xsjbxx.stuid || ',姓名:' ||
                         ls_xsjbxx.stuname);
  end if;
exception
  when no_data_found then
    dbms_output.put_line('该学生SC201901001不存在');
end;

相关文章

  • 好程序员Java培训教程分享oracle中的游标类型

    好程序员Java培训教程分享oracle中的游标类型,数据库中的游标(以下内容以Oracle为例): 游标是sql...

  • Oracle游标

    Oracle游标的关键子CURSOR,用来定义查询出来的数据集,把内存中的数据通过游标一条一条的循环取出。 游标种...

  • Oracle游标

    2019-05-13 游标(cursor)能够根据查询条件从数据表中提取一组记录,将其作为一个临时表置于数据缓冲区...

  • sql 游标,函数,触发器

    游标是数据库的一种机制或类型,可以存储结果集 ,迭代和遍历结果集,oracle中游标大致分为显示游标和隐式游标。 ...

  • Oracle Library cache

    Library cache位于Oracle实例SGA中的shared pool,用于缓存SQL游标、PLSQL程序...

  • oracle 修改游标数

    $ sqlplus /nolog SQL> conn /as sysdba 查看游标数:show paramete...

  • 游标

    游标:用来提取多行数据 Oracle 打开一个工作区(内存区域)来保存多行查询的结果集,游标就是给这个工作区命的名...

  • oracle中的游标类型

    数据库中的游标(以下内容以Oracle为例): 游标是sql的一个内存工作区,由系统或用户以变量的形式定义 游...

  • Oracle课堂笔记

    oracle课堂笔记包含ddl,dml,tcl,游标,过程,函数,触发器等详细demo。志在帮助小白变大神

  • Oracle知识点总结(四)

    序列: ORACLE使用来模拟ID自动增长的 游标(光标): 是用来操作查询结果集,相当于是JDBC中Result...

网友评论

      本文标题:Oracle游标

      本文链接:https://www.haomeiwen.com/subject/qaonrctx.html