主页 > 知识库 > Oracle游标使用参考语句实例解析

Oracle游标使用参考语句实例解析

热门标签:地方门户网站 网站排名优化 AI电销 百度竞价排名 呼叫中心市场需求 Linux服务器 铁路电话系统 服务外包

游标是从表中检索出结果集,从中每次指向一条记录进行交互的机制。

作用

  • 指定结果集中特定行的位置。
  • 基于当前的结果集位置检索一行或连续的几行。
  • 在结果集的当前位置修改行中的数据。
  • 对其他用户所做的数据更改定义不同的敏感性级别。
  • 可以以编程的方式访问数据库。

一个简单实用:

Declare 
  -- 声明游标  
  Cursor Mycur Is 
    Select * From Emp; 
  Empinfo Emp%Rowtype; 
  Cou   Number; 
Begin 
  -- 游标操作使用循环,但是在操作之前必须先将游标打开  
  For Empinfo In Mycur Loop 
    Cou := Mycur%Rowcount; 
    Dbms_Output.Put_Line('行号:' || Cou || '  雇员编号:' || Empinfo.Empno || '  雇员姓名:' || Empinfo.Ename); 
  End Loop; 
End; 

循环取出数据的两种写法:

Declare 
  -- 声明游标  
  Cursor Mycur Is 
    Select * From Emp; -- List (EmpPo)  
  Empinfo Emp%Rowtype; 
  Cou   Number; 
Begin 
  -- 游标操作使用循环,但是在操作之前必须先将游标打开  
  If Mycur%Isopen Then 
    Null; 
  Else 
    Open Mycur; 
  End If; 
  -- 使游标向下一行  
  Fetch Mycur 
    Into Empinfo; 
  -- 判断此行是否有数据被发现  
  While (Mycur%Found) Loop 
    Cou := Mycur%Rowcount; 
    Dbms_Output.Put_Line('行号:' || Cou || '  雇员编号:' || Empinfo.Empno || '  雇员姓名:' || Empinfo.Ename); 
    -- 修改游标,继续向下  
    Fetch Mycur 
      Into Empinfo; 
  End Loop; 
End; 

第二种写法:

Declare 
  -- 声明游标 
  Cursor Mycur Is 
    Select * From Emp; 
  Empinfo Emp%Rowtype; 
  Cou   Number; 
Begin 
  -- 游标操作使用循环,但是在操作之前必须先将游标打开  
  If Mycur%Isopen Then 
    Null; 
  Else 
    Open Mycur; 
  End If; 
  Loop 
    -- 使游标向下一行  
    Fetch Mycur 
      Into Empinfo; 
    Exit When Mycur%Notfound; 
    Cou := Mycur%Rowcount; 
    Dbms_Output.Put_Line('行号:' || Cou || '  雇员编号:' || Empinfo.Empno || '  雇员姓名:' || Empinfo.Ename); 
  End Loop; 
End; 

在存储过程中使用游标

Create Or Replace Procedure Myproc(Oi_Return Out Integer) Is 
  Cursor Mycur Is 
    Select * From Emp_0915; 
  Empinfo Emp_0915%Rowtype; 
  Cou   Number; 
  Exc_Return Exception; -- 程序中间返回自定义异常 
Begin 
  If Mycur%Isopen Then 
    Null; 
  Else 
    Open Mycur; 
  End If; 
  Loop 
    Fetch Mycur 
      Into Empinfo; 
    Exit When Mycur%Notfound; 
    Cou := Mycur%Rowcount; 
    Dbms_Output.Put_Line(Cou || '开始更新...'); 
    Update Emp_0915 t Set t.Sal = t.Sal + 1 Where t.Empno = Empinfo.Empno; 
    Dbms_Output.Put_Line(Cou || '更新结束...'); 
  End Loop; 
  Commit; 
  Oi_Return := 1; 
Exception 
  When Exc_Return Then 
    Rollback; 
    Oi_Return := 0; 
End; 

在oracle中测试:

Declare 
  Re Integer; 
Begin 
  Myproc(Re); 
  If Re = 1 Then 
    Dbms_Output.Put_Line(Re || ':执行结束。。。'); 
  Else 
    Dbms_Output.Put_Line(Re || ':执行错误_______'); 
  End If; 
End; 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
  • 详解Oracle游标的简易用法
  • Oracle游标的使用实例详解
  • Oracle中游标Cursor基本用法详解
  • 详解Oracle隐式游标和显式游标
  • Oracle中的游标和函数详解
  • Oracle出现超出打开游标最大数的解决方法
  • Oracle显示游标的使用及游标for循环
  • Oracle存储过程返回游标实例详解
  • Oracle 游标使用总结
  • oracle 在一个存储过程中调用另一个返回游标的存储过程

标签:铜川 湘潭 黄山 兰州 湖南 崇左 仙桃 衡水

巨人网络通讯声明:本文标题《Oracle游标使用参考语句实例解析》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266