个人所得税计算函数 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;
/