oracle学习之光标

来源:互联网 发布:如何打开防火墙端口 编辑:程序博客网 时间:2024/06/03 17:27
--查询并打印员工的姓名和薪水/*1.光标的属性    %find %notfound    %isopen :判断光标是否打开    %rowcount :影响的行数2.光标的限制*/set SERVEROUTPUT ONDECLARE--定义一个光标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,其他400set SERVEROUTPUT ONdeclare --定义光标,代表给那些员工股涨工资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 ONdeclare --定义光标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;/
原创粉丝点击