oracle 游标使用案例

本文介绍了Oracle数据库中的游标概念,包括其作为逐行处理结果集的机制,以及游标的四个关键属性:%FOUND、%NOTFOUND、%ROWCOUNT和%ISOPEN。通过实例展示了如何使用这些属性在实际操作中进行游标管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、什么是游标

从表中检索出结果集,从中每次指向一条记录进行交互的机制。通过游标的移动逐行提取每一行的记录  。

2、游标的属性。

%FOUND:变量最后从游标中获取记录的时候,在结果集中找到了记录。

%NOTFOUND:变量最后从游标中获取记录的时候,在结果集中没有找到记录。

%ROWCOUNT:当前时刻已经从游标中获取的记录数量。

%ISOPEN:是否打开。

游标案例(%notfound):

declare
  --定义游标
  cursor cemp is select name,wage from Teachers;
  --定义半对象的变量
  t_name Teachers.name%type;
  t_wage Teachers.wage%type;
begin
  --打开游标
    open cemp;
    --使用loop循环
    loop
     --使用fetch向下移位取出数据
    fetch cemp into t_name,t_wage;
    --使用notfound结束循环
    exit when cemp%notfound;
    dbms_output.put_line(t_name||'员工薪资:'||t_wage);
    end loop;
  ---关闭游标
  close cemp;
end;
/

游标案例(%isopen):

declare
  --定义游标
  cursor ts is select name,wage from teachers;
  --定义引用变量
  t_name Teachers.name%type;
  t_wage Teachers.wage%type;
  
begin
  --打开游标 
  open ts;
  if ts%isopen
     then
       dbms_output.put_line('游标已经打开');
       else
         dbms_output.put_line('游标没有打开');
    end if;
  --关闭光标
  close ts;
  
end;
/

游标案例(%rowcount):

declare 
 --定义游标
 cursor ts is select name,wage from teachers;
 --定义变量
 t_name teachers.name%type;
 t_wage teachers.type%type;
begin
  --打开游标
  open ts;
   loop
     fetch ts into t_name,t_wage;
     --当fetch取不到数据时退出循环,
     exit when ts%notfound;
     --打印rowcount的值
     dbms_output.put_line('rowcount'||ts%rowcount);
   end loop; 
  close ts;

end;

带参游标案例

declare
  --定义带参数的游标
  cursor ts(t_id teachers.teacher_id%type) is select name  from teachers where teacher_id=t_id;
  --定义引用变量
  t_name teachers.name%type;
begin
  --打开游标并赋值
   open ts(10101);
    loop
      fetch ts into t_name;
      --如果fetch取不到数据则退出循环
       exit when ts%notfound;
       dbms_output.put_line(t_name); 
    end loop;
  
  --关闭游标  
  close ts;

end;
/

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值