实例

mac2022-06-30  26

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实例源码 超赞的完整版
最新回复(0)