Oracle游标

Oracle游标

好处:1。减少网络流量 2。可以实现遍历 3。直接利用游标更新数据,直接引用表中的行

类型:

1。静态游标 2。引用游标(动态游标)

静态游标:由用户定义(隐式游标、显示游标)结果集不变

REF游标:结果集变化

隐式游标:用DML操作时,自动使用隐式游标。我们可以使用隐式游标判断SQL语句执行结果

自动声明和处理的。在Session会话区,开启游标。处理后自动关闭。可以返回单行查询。

隐式游标使用:

declare

%NOTFOUND  -- 执行行没有找到。

%FOUND  --执行行找到

%ROWCOUNT --游标影响行数

%ISOPEN -- 当前游标是否打开

begin

insert int places values (2,Beijing);

dbms_output_putline('游标所影响的行数' || to_char(SQL%ROWCOUNT));

end;

显示游标:用户定义的游标.用户自动管理

open、fetch、close

由用户控制。

必须首先声明。

 declare
 cursor myCur is select * from emp;
 oneRow emp%rowtype;
 myInt int:=0;
 begin
        open myCur;
 fetch myCur into oneRow;
 dbms_output.put_line(oneRow.ename);
 close myCur;
 end;
/
declare
cursor myCur is select * from emp;
oneRow emp%rowtype;
myInt int:=0;
begin
       open myCur;
  loop
       fetch myCur into oneRow;
  dbms_output.put_line(oneRow.ename);
  exit when myCur%notFound;
       end loop;
  close myCur;
end;

declare
cursor myCur is select * from emp;
oneRow emp%rowtype;
myInt int:=0;
begin
       open myCur;
 fetch myCur into oneRow;
 while (myCur%found)
  loop
  dbms_output.put_line(oneRow.ename);
  dbms_output.put_line(myCur%rowCount);
  fetch myCur into oneRow;
  end loop;
  close myCur;
end;
/
///

for 循环

declare
cursor myCur is select * from emp;
oneRow emp%rowtype;
myInt int:=0;
begin
   for emprow in myCur loop
 dbms_output.put_line(emprow.ename);
   end loop;
end;
/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值