Oracle:PLSQL——游标

1、什么是光标/游标/cursor
类似于JDBC中的ResultSet对象的功能,从上向下依次获取每一记录的内容

语法格式:CURSOR 光标名[参数名 数据类型,参数名 数据类型...]

                IS select 语句;

例1:使用无参光标cursor,查询所有员工的姓名和工资【如果需要遍历多条记录时,使用光标cursor, 无记录找到使用cemp%notfound
declare
    --定义游标
    cursor cemp is select ename,sal from emp;

    --定义变量
    vename emp.ename%type;
    vsal   emp.sal%type;
begin
    --打开游标,这时游标位于第一条记录之前
    open cemp;

    --循环
    loop
        --向下移动游标一次
       fetch
cemp into vename,vsal;
       --退出循环,当游标下移一次后,找不到记录时,则退出循环
       exit when cemp%notfound;

       --输出结果
       dbms_output.put_line(vename||'--------'||vsal);
    end loop;
     --关闭游标
    close cemp;

end;
/
例2:使用带参光标cursor,查询10号部门的员工姓名和工资
declare
    cursor cemp(pdeptno emp.deptno%type) is select ename,sal from emp where deptno=pdeptno;
    pename emp.ename%type;
    psal emp.sal%type;
begin
    open cemp(&deptno);
    loop
        fetch cemp into pename,psal; 
        exit when cemp%notfound;
        dbms_output.put_line(pename||'的薪水是'||psal);
    end loop;
    close cemp;
end;
/
例3:使用无参光标cursor,真正给员工涨工资,ANALYST涨1000,MANAGER涨800,其它涨400,要求显示编号,姓名,职位,薪水
declare
    cursor cemp is select empno,ename,job,sal from emp;
    pempno emp.empno%type;
    pename emp.ename%type;
    pjob   emp.job%type;
    psal   emp.sal%type;
begin
    open cemp;
    loop
        fetch cemp into pempno,pename,pjob,psal;
         --循环退出条件一定要写
        exit when cemp%notfound;
        if pjob='ANALYST' then
            update emp set sal = sal + 1000 where empno = pempno;
        elsif pjob='MANAGER' then
            update emp set sal = sal + 800 where empno = pempno;
        else
     update emp set sal = sal + 400 where empno = pempno;
        end if;
    end loop;
    commit;
    close cemp;
end;
/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值