• 存储过程和游标


    创建一个存储过程:
    如果JOB是PRESIDENT,则SAL加1%;
    如果JOB是MANAGER,则SAL加5%;
    如果JOB是ANALYST则SAL加10%
    如果JOB是SALESMAN则SAL加20%
    如果JOB是都不是以上类别则SAL加15%
    并且要输出它们的ENAME,JOB ,进入公司的天数
    用游标累计叠加计算每个部门所需要支付的薪水,输出 DEPTNO,所支付的薪水

    set serveroutput on;
    create or replace procedure emp_job (aaa number)
    as
    var_days number;
    var_xinzi number:=0;
    cursor cur_emp is select empno,ename,job,hiredate,sal,deptno from scott.emp where deptno=aaa;
    begin
    for xuhuang in cur_emp loop
    if xuhuang.job='PRESIDENT' then
    xuhuang.sal:=xuhuang.sal*1.01;
    elsif xuhuang.job='MANAGER' then
    xuhuang.sal:=xuhuang.sal*1.05;
    elsif xuhuang.job='ANALYST' then
    xuhuang.sal:=xuhuang.sal*1.1;
    elsif xuhuang.job='SALESMAN' then
    xuhuang.sal:=xuhuang.sal*1.2;
    else xuhuang.sal:=xuhuang.sal*1.15;
    end if;
    update emp set sal=xuhuang.sal where empno=xuhuang.empno;
    commit;
    var_xinzi:=var_xinzi+xuhuang.sal;
    var_days:=trunc(sysdate,'j')-trunc(xuhuang.hiredate,'j');
    dbms_output.put_line('姓名:'||xuhuang.ename||' 工作:'||xuhuang.job||' 薪资:'||xuhuang.sal||' 入职天数:'||var_days);
    end loop;
    dbms_output.put_line('部门号:'||aaa||' 需要支付的薪资:'||var_xinzi);
    end;

    SQL> set serveroutput on;
    SQL> exec emp_job(20);

    姓名:SMITH 工作:CLERK 薪资:1058 入职天数:13067
    姓名:JONES 工作:MANAGER 薪资:3279.94 入职天数:12961
    姓名:SCOTT 工作:ANALYST 薪资:3630 入职天数:10753
    姓名:ADAMS 工作:CLERK 薪资:1454.75 入职天数:10719
    姓名:FORD 工作:ANALYST 薪资:3630 入职天数:12716
    部门号:20 需要支付的薪资:13052.69

    PL/SQL procedure successfully completed

    SQL>

  • 相关阅读:
    JAVA课程设计+五子棋游戏
    201521123059 《Java程序设计》第十四周学习总结
    201521123059 《Java程序设计》第十三周学习总结
    软工个人总结
    alpha阶段个人总结
    centos 下构建lamp环境
    软工15作业3——案例分析
    结对编程
    201521123058 软工阅读第二次作业
    软工阅读作业1(201521123058 李绍乐)
  • 原文地址:https://www.cnblogs.com/feng666666/p/5908615.html
Copyright © 2020-2023  润新知