Oracle关于游标

游标:本质上是一个指针,指向数据库查询出来的结果集的每一行数据,初始指向第一行数据

功能:处理多行数据

分类:

显式游标

语法:

declare

cursor 游标名 is sql 语句;定义游标

begin

open 游标名; 打开游标

fetch 游标名 into 变量 ; 提取游标指向数据交给变量,然后指针下移

/游标大多是配合循环使用

close 游标名; 关闭游标

end;

 

例题:

打印输出10号部门的所有人的姓名和工作

declare

cursor cl is select ename,job from emp where deptno=10;

v_ename varchar2(30);

v_job varchar2(30);

begin

open cl;

fetch cl into v_ename,v_job;

dbms_output.put_line(v_ename||v_job);

exit when cl%notfound;

end loop;

close cl;

end;

 

例题:

打印输出10号部门的所有人的姓名和工作loop循环处理游标

declare

cursor cl is select ename,job from emp where deptno=10;

v_ename varchar2(30);

v_job varchar2(30);

begin

open cl;

loop

fetch cl into v_ename,v_job;

dbms_output.put_line(v_ename||v_job);

exit when cl%notfound;

end loop;

close cl;

end;/当这样子最后一个人打印了两次,将exit when与打印互换

 

例题:

打印输出10号部门的所有人的姓名和工作while循环处理游标

declare

cursor cl is select ename,job from emp where deptno=10;

v_ename varchar2(30);

v_job varchar2(30);

begin

open cl;

fetch cl into v_ename,v_job;

while cl%found loop

dbms_output.put_line(v_ename||v_job);

fetch cl into v_ename,v_job;

end loop;

close cl;

end;

 

例题:

打印输出10号部门的所有人的姓名和工作for循环处理游标

//自动打开关闭游标自动fetch游标

declare

cursor cl is select ename,job from emp where deptno=10;

begin

for i in cl loop

dbms_output.put_line(i.ename||i.job);

end loop;

end;

 

cursor cur(dno number defaule 20,v_sal number) is select /(名 类型 默认值)

 

dbms_output.put_line(cl%rowcount)多少个数据

declare

begin

if

cl%isopen then dbms_output.put_line('打开');

else open cl;

end if;

loop

end loop;

end;

隐式游标

针对dml语句,所有的隐式游标名字统一:sql

dclare

begin

update emp set sal=1000 where deptno=10;

dbms_output.put_line(sql%rowcount);

end;

 

游标属性:

1.%found 

当游标有结果的时候返回ture 

2.%notfound

当游标没有结果的时候返回ture 

3.%isopen

判断游标是否打开

4.%rowcount

返回一个数值,游标处理了多少行记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值