个人所得税计算函数 Oracle可用-阿里云开发者社区

开发者社区> 范大脚脚> 正文

个人所得税计算函数 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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
计算字符串相似度算法——Levenshtein
0.这个算法实现起来很简单 1.百度百科介绍: Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。 许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。
922 0
个人网站可以申请什么样的https证书
  https证书即SSL证书,网站安装SSL证书可将http协议升级为https加密协议,可保障网站数据信息安全。随着SSL证书技术不断的发展,SSL证书的作用不仅仅在于数据加密,还有利于seo关键词优化,帮助网站进行排名,这也是个人网站选择安装SSL证书的重要原因。
2794 0
【oracle】关于日志产生量的计算
根据每日归档的生成量,可以反过来估计每日的数据库活动性及周期性,并决定空间分配的问题!1.计算归档日志的生产量:select name,completion_time,BLOCKS * BLOCK_SIZE/1024/1024 MB from v$archived_log where rownum 2.
545 0
PHPpraffa也有了,一个PHP版本的阿里云函数计算与API网关的开发框架
发布了Python版本的函数计算与API网关的开发框架后,一直觉得对不起PHP,因为公司一直是用PHP的,我这弄了个Python,实在不该,对了,(Python版本说明点这里。 PHPpraffa是什么? PHPpraffa 是praffa的PHP版本。
1160 0
+关注
3656
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载