PL/SQL基础编程之(六)[游标的使用]

重点:游标对于大数据量是低效率的 重点: 1、 游标的属性 2、 Current of cursor 游标的当前记录 1. 游标:游标是select之后的结果集。我们可以借助游标将结果集每一条赋值到结果集中, 然后对数据进行逐条控制 2. 游标的属性解析 2.1. %FOUND : 布尔型的判断,有数据可取为true,没有则为false 2.2. %NOTFOUND:与found正好相反 2.3. %ISOPEN:判断是否已经打开游标 2.4. ROWCOUNT:判断游标内的数据有多少条 1、游标应用的案例 declare cursor mycur is select * from dept; --定义游标 myrec dept%rowtype; --定义复合变量 begin open mycur; --打开游标,拿出来 fetch mycur into myrec; --将游标赋值给变量 while mycur%found loop --用游标的%found属性返回布尔值判断做循环输出 dbms_output.put_line('myrec.did'||myrec.did); dbms_output.put_line('myrec.dname'||myrec.dname); fetch mycur into myrec; --循环体内输出 end loop; end; / 2、游标传参的案例 declare cursor mycur(id varchar2) is --定义游标 select dname from dept where did=id; --这里的ID应用的是游标里面定义的ID name dept.dname%type; --定义存储结果的变量 begin open mycur('01'); --打开游标,相当于把参数传递进去了 fetch mycur into name; --将游标的值赋给变量 dbms_output.put_line(name); if mycur%isopen then --游标的属性isopen的应用 dbms_output.put_line('游标已经打开'); end if; end; / 3、current of mycur的应用,判断到游标所在的当前行。并且用游标更新数据 declare cursor mycur is select dname from dept for update; --这里加上for update是锁定用来更新数据的游标。 name dept.dname%type; begin open mycur; fetch mycur into name; while mycur%found loop --条件 while loop dbms_output.put_line('aaa'); update dept set dname='部门aa' where CURRENT of mycur; --关键所在,运用了current of mycur做where条件意思是说。判断游标所在的当前行 fetch mycur into name; end loop; close mycur; end; / 重:隐士游标不需要声明不需要打开和关闭 隐士游标的案例: begin for cur in(select dname from dept) loop dbms_output.put_line(cur.dname); end loop; end; /
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值