问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

求一段用于ORACLE数据库的PL-SQL写的代码

发布网友 发布时间:2022-04-14 03:35

我来回答

2个回答

热心网友 时间:2022-04-14 05:04

楼上的计算有误,税额是分层计算的。

楼主我的程序已经通过测试,并且我把你的1600的起征额设置为了变量,可传入。100分好像有点少哦,呵呵!

--create by terrycui at 2010/3/20 18:00-18:45
create or replace function get_taxamount(v_totalamount number,v_startamount number)
return number is v_taxamount number;
v_taxrate number; --税率
v_balance number; --差额(计算最后一个层级税额的金额)
v_subtaxamount number; --最后一层税额之前所有层级满额的总和

begin
v_balance := v_totalamount - v_startamount;
if v_balance <= 500 then
v_taxrate := 5;
v_subtaxamount := 0;
v_balance := v_balance - 0;
elsif v_balance <= 2000 then
v_taxrate := 10;
v_subtaxamount := 25;
v_balance := v_balance - 500;
elsif v_balance <= 5000 then
v_taxrate := 15;
v_subtaxamount := 175;
v_balance := v_balance - 2000;
elsif v_balance <= 20000 then
v_taxrate := 20;
v_subtaxamount := 625;
v_balance := v_balance - 5000;
elsif v_balance <= 40000 then
v_taxrate := 25;
v_subtaxamount := 3625;
v_balance := v_balance - 20000;
elsif v_balance <= 60000 then
v_taxrate := 30;
v_subtaxamount := 8625;
v_balance := v_balance - 40000;
elsif v_balance <= 80000 then
v_taxrate := 35;
v_subtaxamount := 14625;
v_balance := v_balance - 60000;
elsif v_balance <= 100000 then
v_taxrate := 40;
v_subtaxamount := 21625;
v_balance := v_balance - 80000;
elsif v_balance > 100000 then
v_taxrate := 45;
v_subtaxamount := 29625;
v_balance := v_balance - 100000;
end if;

v_taxamount := v_balance * v_taxrate / 100 + v_subtaxamount;
return v_taxamount;
end get_taxamount;

你执行一下,然后运行:
select get_taxamount(18000,1600) from al --18000是薪水总额,1600是起征额。

加分加分~~

热心网友 时间:2022-04-14 06:22

create or replace function ATESTHL(N_IN Integer) return varchar2 is
ReturnValue number(18,2);
begin
-- Test statements here
if N_IN <= 500 then
select (N_IN*0.05) into ReturnValue from al;
end if;
if N_IN > 500 and N_IN <= 2000 then
select (N_IN*0.1) into ReturnValue from al;
end if;
if N_IN > 2000 and N_IN <= 5000 then
select N_IN*0.15 into ReturnValue from al;
end if;
if N_IN > 5000 and N_IN <= 20000 then
select N_IN*0.2 into ReturnValue from al;
end if;
if N_IN > 20000 and N_IN <= 40000 then
select N_IN*0.25 into ReturnValue from al;
end if;
if N_IN > 40000 and N_IN <= 60000 then
select N_IN*0.3 into ReturnValue from al;
end if;
if N_IN > 60000 and N_IN <= 80000 then
select N_IN*0.35 into ReturnValue from al;
end if;
if N_IN > 80000 and N_IN <= 100000 then
select N_IN*0.4 into ReturnValue from al;
end if;
if N_IN > 100000 then
select N_IN*0.45 into ReturnValue from al;
end if;
return (ReturnValue);
end;
oracle 数据库查询脚本 plsql

创建表 create table a(姓名 varchar2(10),状态 int,更新时间 date,内容 varchar2(20));insert into a values ('张三',1,to_date('2015-01-02','yyyy-mm-dd'),'测试数据1');insert into a values ('李四',1,to_date('2015-01-02','yyyy-mm-dd'),'测试数据2');insert into a...

Oracle数据库中 编写一个PL/SQL代码块,用以接受用户输入的数字。将该...

CREATE OR REPLACE FUNCTION reverse_num(p_num IN NUMBER) RETURN NUMBER IS aa VARCHAR2(20);amount INTEGER;offset NUMBER;str VARCHAR(20);strnum VARCHAR(20);BEGIN strnum := to_char(p_num);offset := length(strnum);amount := 1;FOR i IN REVERSE 1 .. offset LOOP dbms_...

oracle 视图sql语句怎么写

1、第一步,通过pl / sql登录到oracle数据库,见下图,转到下面的步骤。2、第二步,完成上述步骤后,输入sql以查询该库的所有视图,elect * from all_views t,并要求所有者在结果中代表不同的用户,见下图,转到下面的步骤。3、第三步,完成上述步骤后,如果查看用户的所有视图,执行sql,select ...

Oracle数据库的pl/sql编程问题:

看你的account_a + account_b,显然这两个字段是字符型,ORACLE如果是字符串拼接,是不能用+的,如果这两个字段是字符型,那么+应该修改为||。所以,既然从这个语句可以看出account_a + account_b这两个字段是数字型,那么||进行字符串拼接的时候,要求左右都是字符型,才会正确。所以,你的||右边...

oracle数据库写一个PL/SQL无名块,显示从2到100的50个偶数

declare i number; begin for i in 1..100 loop if i mod 2 = 0 then dbms_output.put_line(i); end if; end loop;end;

如何用plsql连接oracle数据库

如何用PLSQL登录Oracle数据库

第一步:在用户名和密码列分别输入要登录的数据库用户名和密码 第二步:在“数据库”中输入“ip:1521/oracle实例名”(如“192.168.0.143:1521/orcl”,本机填写“127.0.0.1”)第三步:如果是普通用户连接类型为“Normal”,如果是超级管理员连接类型为“sysdba”,点击确定即可完成连接(...

ORACLE数据库用PLSQL如何批量更新表里的某个字段的内容为文字加上另外...

可以用以下SQL试试,如果有一对多的情况在b.name=a.name后面加个 and rownum=1:upddate table_a a set a.lname =(select '前缀字符串'||b.lname from table_b b where b.id=a.id and b.name=a.name)

请问如何导出oracle数据表(只导出某一个用户下的所有数据表)我要语句...

可能很多使用Oracle的客户都会碰到想把某用户所有表导出的情况,本文就提供这样一个方法帮你轻松解决这个问题。 首先在sqlplus下以该用户登录到Oracle数据库,然后将以下内容粘贴到sqlplus中: set feedback off;set pagesize 0;set heading off;set verify off;set linesize 200;set trimspool on;...

plsql如何配置连接oracle数据库

1、首先我们打开PLSQL,点取消进去进入数据库。2、然后弹出PLSQL主界面,找到菜单栏的tools选择属性preferences进去。3、弹出如下界面,配置oracleclient,配置好两个设置项,点apply,然后点ok,关闭PLSQL,重启PLSQL。4、上边的两个填写项就是第一步中的目录,以及目录下的一个文件,如下图所示,在哪个...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
如何区分三极管和场效应管? 歌词 一字一句都在说明过去回不去 是 哪首歌? 过去总是回不去是哪首歌的歌词? ...像是别离……若是回忆……该如何追忆是哪首歌 为什么一本书读好几遍还是难以把握书中精髓?五步教你高效读... 如何利用听书或有声读物进行学习? 每当夜深人静时你最喜欢想的事情是什么? 问君能有几多愁,恰似一江春水向东流。抽刀断水水更流,举杯消愁愁更愁... 北京国光兴达科技有限公司怎么样? 庄心妍独上西楼自古能有几多消愁是哪一首歌 冬至前炖羊肉用什么???有一样是当归。。还有两样是什么??急。。。 冬至吃羊肉,说说怎么去膻味 冬至的羊肉汤怎么炖 成都交警蓉e行下载 今日成都限不限行? 怎样在蓉e行上找到晚高峰车削模块 怎样在蓉e行上找到平峰时段通行次码撤销模块_百度问一问 怎样下载成都12月实施的&quot;蓉e行&quot; 蓉e行10分钟挪车信息填错了怎么办根据提起拍了照片,但是没有把车牌拍进去,展示申诉失败,这种情况还_百度问一问 求个oracle数据库语句,要在PL/SQL运行的 大学毕业后自己不小心把学籍档案弄丢了,不知能否回学校补办。该怎么补?急啊! 普惠金融短信是属于银行发的吗? 普惠金融发短信说进入诉讼这消息会发通讯录吗 普惠金融上没有贷款却发信息说逾期要起诉我我也没有贷过款这是怎么回事? 普惠金融法院正式诉讼短信 普惠金融起诉短信是真的吗? 普惠金融欠款发短信说上法庭是真的吗 普惠金融发短信说起诉我是真的吗 收到普惠金融的起诉短信怎么办 pt950和18k铂金是什么意思 18k金和铂金有什么区别,除了价格上的 18k铂金是什么? 水果横截面素描 要素描的,不要太难,也不要太简单 苹果里为什么会有星星?为什么很多水果的横截面都是对称的? 什么水果的横切面像颗爱心 下列哪种水果的横截面像五角星? 谁知到横截面是五角星的水果是什么? 教幼儿认识南方水果与北方水果教案ppt 这是什么水果?? 有谁知道ps软件下载地址啊(中文版) 跪求PS C5中文版 免费下载 和PS C5的新手教程 求免费PS C5软件下载地址 - 信息提示 求PS C5中文破解版, 我想学PS 我应该下载哪个版本的啊? PS软件是免费的吗??? 求详解 oracle 中用pl&#47;sql工具执行如下语句,首先声明这张表是有2012-07-01的数据的,为什么查不出来呢 谁有ps c5版本,能否发一个,不甚感谢 求ps简体中文版绿色c5 photoshop C5中文版 求PS软件,无毒免费,c5/c6都行,百度网盘链接 - 信息提示 求ps c5中文破解版,哪位大神可以发给我? 求PS C5中文破解版的,给个吧
  • 焦点

最新推荐

猜你喜欢

热门推荐