求一段用于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、上边的两个填写项就是第一步中的目录,以及目录下的一个文件,如下图所示,在哪个...