首页数据库Oracle游标作用包括哪些,用法是怎样

Oracle游标作用包括哪些,用法是怎样

时间2024-03-22 06:18:03发布访客分类数据库浏览1320
导读:在这篇文章中我们会学习到关于“Oracle游标作用包括哪些,用法是怎样”的知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望对大家学习或工作能有帮助。下面就请大家跟着小编的思路一起来学习一下吧。...
在这篇文章中我们会学习到关于“Oracle游标作用包括哪些,用法是怎样”的知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望对大家学习或工作能有帮助。下面就请大家跟着小编的思路一起来学习一下吧。

           

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

作用

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

一个简单实用:

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游标作用包括哪些,用法是怎样”的相关知识,感谢各位的阅读,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注网络,小编每天都会为大家更新不同的知识。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Oracle游标作用包括哪些,用法是怎样
本文地址: https://pptw.com/jishu/650131.html
Oracle序列Sequence的作用是什么,如何应用 php字符串有几个中文是如何检测的?

游客 回复需填写必要信息