zoukankan      html  css  js  c++  java
  • 实例

    1.编写一段PL/SQL,实现计算个人

    所得税计算逻辑。(参考图例的扣除方法)
    3500免征
    如果超过3500,按以下阶段方式扣除
    --小于1500时,税率按3%,速算扣除数0
    --在1500到4500区间时,税率10%,速算扣除数105
    --在4500到9000区间时,税率20%,速算扣除数555
    --大于等于9000时,税率25%,速算扣除数1005
    示例:
    4000-3500=500*0.03-0=15
    6000-3500=2500*0.1-105=145
    declare
      v_sal number(10):= 10000;
      v_tax number(7,2);
      v_tax_sal number(10);
    begin
      --计算出应交税的工资部分
      v_tax_sal := v_sal-3500;
      --判断区间
      if v_tax_sal<1500 then
         v_tax := v_tax_sal*0.03;
      elsif v_tax_sal<4500 then
         v_tax := v_tax_sal*0.1-105;
      elsif v_tax_sal<9000 then
         v_tax := v_tax_sal*0.2-555;
      else
         v_tax := v_tax_sal*0.25-1005;
      end if;
      dbms_output.put_line('工资:'||v_sal);
      dbms_output.put_line('交税:'||v_tax);
    end;
     
    //新增需求
    根据EMP表记录生成纳税记录表的信息
    纳税记录表EMP_TAX
    主键ID
    员工编号EMPNO
    员工名称ENAME
    员工工资总额SAL (EMP中SAL+COMM合计)
    纳税额TAX(根据前面扣税逻辑计算的金额)
    纳税时间TAX_DATE(系统时间)
    编写一个PL/SQL完成上述功能
    create table emp_tax(
     ID NUMBER primary key,
     EMPNO NUMBER(4),
     ENAME VARCHAR2(10),
     SAL NUMBER(7,2),
     TAX NUMBER(7,2),
     TAX_DATE DATE
    );
    create sequence tax_seq;
     
    -----PL/SQL---------
    declare
     CURSOR c_emp IS select * from emp;
     v_emp emp%ROWTYPE;--记录变量,保存一行员工信息
     v_total emp.sal%TYPE;--工资总额
     v_tax_sal emp.sal%TYPE;--交税工资
     v_tax emp.sal%TYPE;--交税金额
    begin
      OPEN c_emp;
      LOOP
      --循环取出EMP表每一行员工记录
        fetch c_emp into v_emp;
        exit when c_emp%NOTFOUND;
      --计算员工应交税金额TAX
        v_total := v_emp.sal+NVL(v_emp.comm,0);
        v_tax_sal := v_total-3500;
      --判断区间
        if v_tax_sal<=0 then
          v_tax :=0;
        elsif v_tax_sal<1500 then
          v_tax := v_tax_sal*0.03;
        elsif v_tax_sal<4500 then
          v_tax := v_tax_sal*0.1-105;
        elsif v_tax_sal<9000 then
          v_tax := v_tax_sal*0.2-555;
        else
          v_tax := v_tax_sal*0.25-1005;
        end if;
      --将EMP_TAX所需的字段值写入INSERT
        insert into EMP_TAX(id,empno,
         ename,sal,tax,tax_date)
        values(tax_seq.nextval,v_emp.empno,
         v_emp.ename,v_total,v_tax,sysdate);
      END LOOP;
      CLOSE c_emp;
      commit;--提交操作
    end;
  • 相关阅读:
    (转)使用BigDecimal进行精确运算
    date——sql查询
    (转)每天一个linux命令(8):cp 命令,复制文件和文件夹
    (转)每天一个linux命令(15):tail 命令
    (转)Linux 下 查看以及修改文件权限
    (转)用JUnit4进行单元测试
    (转)Spring Boot Junit单元测试
    (转)ZXing解析二维码
    (转)ZXing生成二维码和带logo的二维码,模仿微信生成二维码效果
    (转)js jquery.qrcode生成二维码 带logo 支持中文
  • 原文地址:https://www.cnblogs.com/yunman/p/5497867.html
Copyright © 2011-2022 走看看