个人所得税计算函数 Oracle可用

简介:

create or replace function FN_PersonalIncomeTax(p_IncomeValue number)
                        RETURN number
 /*
***************************************************************************************
  过程名称: 计算个人所得税
    过程ID:
      分类:公用
  入口参数:
  出口参数:
            IncomeValue number(18,2) =应税收入
     
   返回值:  应交税额


  关联资源:
    调用方:
  功能描述:
  作者:
  日期
****************************************************************************************
*/
as
    --局部变量
   v_Tax                number(36,2); --应纳个人所得税税额
   v_ChargeAbleTax      number(36,2);--应纳税所得额-扣除标准
   v_Taxrate            number(36,2);--税率
   v_TaxBalance         number(36,2);--速算扣除数

begin

/*
应纳个人所得税税额=(应纳税所得额-扣除标准)*适用税率 - 速算扣除数

扣除标准2000元/月(2008年3月1日起调高为2000元)

个人所得税计算公式
1不超过500元的部分,             税率5%,      速算扣除数为0;
2超过500元至2000元的部分,       税率10%,     速算扣除数为25
3超过2000元至5000元的部分,      税率15 %,    速算扣除数为125
4超过5000元至20000元的部分,     税率20 %,    速算扣除数为375
5超过20000元至40000元的部分,    税率25%,     速算扣除数为1375
6超过40000元至60000元的部分,    税率30%,     速算扣除数为3375
7超过60000元至80000元的部分,    税率35%,     速算扣除数为6375
8超过80000元至100000元的部分,   税率40%,     速算扣除数为10375
9超过100000元的部分,            税率45%,     速算扣除数为15375
*/
   v_tax:=0;
   v_ChargeAbleTax :=p_IncomeValue-2000; --扣除标准2000元
 
  if v_ChargeAbleTax< 0  then
     v_Taxrate :=0;v_TaxBalance:=0;
  end if;  
  if v_ChargeAbleTax>0  and v_ChargeAbleTax<=500 then
     v_Taxrate :=0.05;v_TaxBalance:=0;
  end if;
  if v_ChargeAbleTax>500  and v_ChargeAbleTax<=2000 then
    v_Taxrate :=0.1;v_TaxBalance:=25;
  end if;
  if v_ChargeAbleTax>2000  and v_ChargeAbleTax<=5000  then
     v_Taxrate :=0.15;v_TaxBalance:=125;
  end if;
  if v_ChargeAbleTax>5000  and v_ChargeAbleTax<=20000  then
     v_Taxrate :=0.2;v_TaxBalance:=375;
  end if;
  if v_ChargeAbleTax>20000  and v_ChargeAbleTax<=40000  then
     v_Taxrate :=0.25;v_TaxBalance:=1375;
  end if;
  if v_ChargeAbleTax>40000  and v_ChargeAbleTax<=60000  then
     v_Taxrate :=0.3;v_TaxBalance:=3375;
  end if;
  if v_ChargeAbleTax>60000  and v_ChargeAbleTax<=80000  then
     v_Taxrate :=0.35;v_TaxBalance:=6375;
  end if;
  if v_ChargeAbleTax>80000  and v_ChargeAbleTax<=100000  then
     v_Taxrate :=0.4;v_TaxBalance:=10375;
  end if;
  if v_ChargeAbleTax>100000 then
     v_Taxrate :=0.45;v_TaxBalance:=15375;
  end if;
 


   v_tax:=v_ChargeAbleTax*v_Taxrate-v_TaxBalance;
   
   return v_tax;

EXCEPTION
    WHEN OTHERS THEN
          RETURN v_tax; --SQL 错误
end;
/



本文转自tiasys博客园博客,原文链接:http://www.cnblogs.com/tiasys/archive/2009/06/03/1495096.html,如需转载请自行联系原作者

相关文章
|
2月前
|
SQL Oracle 关系型数据库
Oracle查询优化-计算字符在字符串中出现的次数
【2月更文挑战第3天】【2月更文挑战第7篇】只接上SQL
55 0
|
4月前
|
SQL Oracle 关系型数据库
Oracle之日期计算相关函数
Oracle之日期计算相关函数
45 0
|
4月前
|
SQL Oracle 关系型数据库
Oracle之regexp系列函数详解
Oracle之regexp系列函数详解
147 1
|
7月前
|
存储 SQL Oracle
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
68 0
|
3月前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
38 0
|
3月前
|
SQL Oracle 关系型数据库
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
66 0
JAVAEE框架数据库技术之12_oracle常用函数和高级查询子查询
|
7天前
|
Oracle 算法 关系型数据库
Oracle常用系统函数之数字类函数:数字的魔术师
【4月更文挑战第19天】Oracle数据库中的数字类函数是数字处理的魔术师,包括`ROUND`(四舍五入),`CEIL`和`FLOOR`(向上/下取整),以及`ABS`(计算绝对值)。还有`MOD`、`TRUNC`和`POWER`等函数,提供求余数、截断和计算幂的功能。熟练运用这些函数能提升数据管理效率,让处理数字变得更简单、有趣。
|
2月前
|
SQL Oracle 关系型数据库
Oracle查询优化-聚集函数
【2月更文挑战第5天】【2月更文挑战第13篇】聚集函数
19 4
|
3月前
|
存储 SQL Java
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(一)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
35 0
|
3月前
|
SQL Oracle 算法
Oracle函数
Oracle函数
98 1