Oracle--PL/SQL游标(光标)详解

在写Java程序中有集合的概念,那么在pl/sql中也会用到多条记录,这时候就需要用到游标,游标可以存储查询返回的多条数据。

游标的属性
属性描述
%notfound如果fetch失败,那么该属性就会返回true;否则返回false;
%found如果fetch成功,那么该属性就返回true;否则就返回false;
%rowcount返回已经fetch了的记录数,即影响的行数
%isOpen如果游标已经打开,那么该属性就返回true;否则就返回false
语法:
CURSOR 游标名 [(参数名 数据类型,参数名 数据类型,...)] IS SELECT 语句;

例如:

cursor c1 is select ename from emp;

游标的使用步骤:

  • 打开游标: open c1;(打开游标执行查询)
  • 取一行游标的值:fetch c1 into pjob;(取一行到变量中)
  • 关闭游标:close c1;(关闭游标释放资源)
  • 游标的结束的方式:exit when c1%notfound

注 意 : 上 面 的 p j o b 必 须 与 e m p 表 中 的 j o b 列 类 型 一 致 \color{red}{注意:上面的pjob必须与emp表中的job列类型一致} pjobempjob

  • 定义:pjob emp.empjob%type;

示例1:使用游标方式输出emp表中的员工编号和姓名

declare
  cursor pc is
     select * from emp;
  pemp emp%rowtype;
begin
  open pc;
  loop
    fetch pc
      into pemp;
    exit when pc%notfound;
    dbms_output.put_line(pemp.empno || ' ' || pemp.ename);
  end loop;
  close pc;
end;

在这里插入图片描述
示例2:写一段PL/SQL程序,为部门号为10号的员工涨工资

declare
  cursor pc(dno emp.deptno%type) is
     select empno from emp where deptno = dno;
  pno emp.empno%type;
begin
  open pc(20);
  loop
    fetch pc
      into pno;
    exit when pc%notfound;
    update emp t set t.sal = t.sal + 1000 where t.empno = pno;
  end loop;
  close pc;
end;
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值