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;
转载于:https://www.cnblogs.com/yunman/p/5497867.html
相关资源:198个经典C#WinForm实例源码 超赞的完整版