oracle学习之光标

--查询并打印员工的姓名和薪水
/*
1.光标的属性
    %find %notfound
    %isopen :判断光标是否打开
    %rowcount :影响的行数

2.光标的限制
*/
set SERVEROUTPUT ON

DECLARE
--定义一个光标
cursor cemp is select ename,sal from emp;
--为光标定义对应的变量
pename emp.ename%type;
psal emp.sal%type;

begin
    --打开光标
    open cemp;

    loop
        --取一条记录
        fetch cemp into pename,psal;

        exit when cemp%notfound;

        --打印
        dbms_output.put_line('员工姓名:'||pename||'----员工薪水:'||psal);

    end loop;
    --关闭光标
    close cemp;
end;
/


------------------------------------------------
--给员工涨工资,总裁1000,经理800,其他400
set SERVEROUTPUT ON

declare 
--定义光标,代表给那些员工股涨工资
cursor cemp is select empno,ejob from emp;
pempno emp.empno%type;
pjob emp.empjob%type;

begin
    --打开光标
    open cemp;

    loop
        -- 去除一个员工
        fetch cemp into pempno,pjob;

        exit when cemp%notfound;

        --判断员工的职位
        if pjob = 'PERSIDENT' 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 + 500 where empno = pempno;

        end if;
    end loop;
    close cemp;
    --必须要提交
    commit;
end;
/


------------------------------
--查询并打印员工的姓名和薪水
/*
1.光标的属性
    %find %notfound
    %isopen :判断光标是否打开
    %rowcount :影响的行数

2.光标的限制:默认的情况下,oracle数据库只允许在同一个会话中,打开300的光标
*/
set SERVEROUTPUT ON

declare 
--定义光标
cursor cemp(dno in number) is select ename from emp where deptno = dno;
pename emp.ename%type;

begin
    --打开光标
    open cemp(20);

    loop
        --去除员工
        fetch cemp into pename;
        exit when cemp%notfound;

        dbms_output.put_line(pename);

    end loop;

    --关闭光标
    close cemp;

end;
/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值