函数

-- 八、函数
必须有一个返回值/* 
create [or replace] function 函数名[(形参列表)]
return 返回值类型
is/as
[声明部分]
begin
执行部分
return 语句;
[异常处理部分]
end;
 */
-- 1.不带参数的函数
create or replace function  fun_hello
return varchar2
is
begin
return 'hello world!';
end;

-- 调用1:通过sql语句调用:
select fun_hello from dual;

-- 调用2:通过pl/sql语句调用
begin
dbms_output.put_line(fun_hello);
end;

-- 2、带参数的函数求两个数中最大值
create or replace function fun_max(a number,b number) 
RETURN NUMBER
is
begin
if a>=b then
return a;
else
return b;
end if;
end;

declare
m number;
n number;
begin
m:=&请输入一个数据;
n:=&请输入另一个数据;
dbms_output.put_line(fun_max(m,n));
end;

-- 求一个数的阶乘
create or replace function fun_jc(n number)
return number
is
s number:=1;
begin
 for i in 1..n
 loop
   s:=s*i;
 end loop;
 return s;
end;

select fun_jc(5) from dual;

declare
n number;
begin
n:=&请输入一个正整数;
dbms_output.put_line(fun_jc(n));
end;

-- 求税率
create or replace function tax(money number)
return number
is
rate number;
begin
  if money<=3500 then
    rate:=0;
  else if money<=5000 then
    rate:=(money-3500)*0.05;
  else if money<=10000 then
   rate:=1500*0.05+(money-5000)*0.1;
  else if money<=15000 then
  rate:=1500*0.05+5000*0.1+(money-10000)*0.15;
  else
  rate:=1500*0.05+5000*0.1+5000*0.15+(money-15000)*0.2;
end if;
end if;
end if;
end if;
return rate;
end;


select empno,ename,tax(sal) from emp;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值