oracle的游标

                               游标
声明游标:declare cursor (声明游标) 游标名 is select语句
打开游标:open 游标名
读取数据:fetch 游标名 into 变量列表
关闭游标:close 游标名   
可以声明一个行类型变量: 变量名 游标名%rowtype 或表名%type
取出一条记录
declare 
mz a.xm%type;--声明变量
nv a.xb%type;--声明变量
cursor cus1 is select xm,xb from a where bj='你好';--建立游标
begin
open cus1;--打开游标
fetch cus1 into mz,nv;--读取数据
dbms_output.put_line('姓名:'||mz||'性别:'||nv);--输出数据
close cus1;--关闭游标
end;


取出多条记录
declare 
cursor cus1 is select xm,xb from a ;--声明游标
cus2 cus1%rowtype;--声明变量
begin
if not cus1%isopen then --如果游标没有打开,就执行打开游标
open cus1;
end if;
fetch cus1 into cus2;--取出第一条记录
while cus1%found loop --循环条件为cus1不为空
dbms_output.put_line('姓名:'||cus2.xm ||'   性别:'||cus2.xb);
fetch cus1 into cus2;--取出下一条记录
end loop;
dbms_output.put_line('总行数:'||cus1%rowcount);--输出总行数
close cus1;
end;


使用bulk collect 和for 语句的游标, fetch bulk collect into批量提取数据
前面都是一样的循环不一样
loop
fetch cus1 bulk collect into cus2 limit 3;--批量取出3条记录
for i in 1..cus2.count loop;
dbms_output.put_line('输出数据:'||cus2(i).xm);
end loop;
exit when cus1%notfound;--当没有数据就退出
end loop;


for  loop 语句 没循环一次,游标会自动下移取出下一行数据,不用读取数据。也不用打开游标,也不用关闭游标,但他不能记录总行数
cus_count integer:=0;--定义一个变量,用来存储总行数
for cus2 in cus1 loop;--自动下移,指向下一条记录
dbms_output.put_line('输出数据:'||cus2(i).xm);
cus_count=cus_count+1;
end loop;
dbms_output.put_line('输出总行数'||cus_count)


为游标传递参数 (在游标名后面加一个参数)如下
declare 
cursor(cs integer)cus1 is select xm,xb from a ;--声明游标给了一个参数


显式游标的属性
%isopen : 判断游标是否打开,打开为真,否则为假
%found: 判断游标最近一次fetch是否取到数据,若是为真
%notfound: 与%found相反
%rowcount:判断游标打开以来,用fetch命令获得的总行数


强类型动态游标
声明动态游标:type 游标名 is ref cursor  return 记录类型
打开游标: open 游标变量 for  select语句
如 declare
type yb1 is cursor return 表名%rowtype
yb2 yb1;--定义游标变量
c_count number;



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值