Oracle游标使用参考语句实例解析
游标是从表中检索出结果集,从中每次指向一条记录进行交互的机制。
作用
- 指定结果集中特定行的位置。
- 基于当前的结果集位置检索一行或连续的几行。
- 在结果集的当前位置修改行中的数据。
- 对其他用户所做的数据更改定义不同的敏感性级别。
- 可以以编程的方式访问数据库。
一个简单实用:
Declare
--声明游标
CursorMycurIs
Select*FromEmp;
EmpinfoEmp%Rowtype;
CouNumber;
Begin
--游标操作使用循环,但是在操作之前必须先将游标打开
ForEmpinfoInMycurLoop
Cou:=Mycur%Rowcount;
Dbms_Output.Put_Line('行号:'||Cou||'雇员编号:'||Empinfo.Empno||'雇员姓名:'||Empinfo.Ename);
EndLoop;
End;
循环取出数据的两种写法:
Declare
--声明游标
CursorMycurIs
Select*FromEmp;--List(EmpPo)
EmpinfoEmp%Rowtype;
CouNumber;
Begin
--游标操作使用循环,但是在操作之前必须先将游标打开
IfMycur%IsopenThen
Null;
Else
OpenMycur;
EndIf;
--使游标向下一行
FetchMycur
IntoEmpinfo;
--判断此行是否有数据被发现
While(Mycur%Found)Loop
Cou:=Mycur%Rowcount;
Dbms_Output.Put_Line('行号:'||Cou||'雇员编号:'||Empinfo.Empno||'雇员姓名:'||Empinfo.Ename);
--修改游标,继续向下
FetchMycur
IntoEmpinfo;
EndLoop;
End;
第二种写法:
Declare
--声明游标
CursorMycurIs
Select*FromEmp;
EmpinfoEmp%Rowtype;
CouNumber;
Begin
--游标操作使用循环,但是在操作之前必须先将游标打开
IfMycur%IsopenThen
Null;
Else
OpenMycur;
EndIf;
Loop
--使游标向下一行
FetchMycur
IntoEmpinfo;
ExitWhenMycur%Notfound;
Cou:=Mycur%Rowcount;
Dbms_Output.Put_Line('行号:'||Cou||'雇员编号:'||Empinfo.Empno||'雇员姓名:'||Empinfo.Ename);
EndLoop;
End;
在存储过程中使用游标
CreateOrReplaceProcedureMyproc(Oi_ReturnOutInteger)Is CursorMycurIs Select*FromEmp_0915; EmpinfoEmp_0915%Rowtype; CouNumber; Exc_ReturnException;--程序中间返回自定义异常 Begin IfMycur%IsopenThen Null; Else OpenMycur; EndIf; Loop FetchMycur IntoEmpinfo; ExitWhenMycur%Notfound; Cou:=Mycur%Rowcount; Dbms_Output.Put_Line(Cou||'开始更新...'); UpdateEmp_0915tSett.Sal=t.Sal+1Wheret.Empno=Empinfo.Empno; Dbms_Output.Put_Line(Cou||'更新结束...'); EndLoop; Commit; Oi_Return:=1; Exception WhenExc_ReturnThen Rollback; Oi_Return:=0; End;
在oracle中测试:
Declare ReInteger; Begin Myproc(Re); IfRe=1Then Dbms_Output.Put_Line(Re||':执行结束。。。'); Else Dbms_Output.Put_Line(Re||':执行错误_______'); EndIf; End;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。