oracle中函數(shù)
一、oracle中函數(shù)
在oracle中函數(shù)用于處理邏輯關(guān)系,完成一個(gè)或n個(gè)較為復(fù)雜的邏輯功能。
例如:計(jì)算工資應(yīng)納所得稅,這是邏輯
1.聲明自定義函數(shù),實(shí)現(xiàn)2個(gè)數(shù)找最大值,并返回最大值
函數(shù)聲明語(yǔ)法:
create function 自定義函數(shù)名(
參數(shù)名1 [in/out/in out] 參數(shù)類型,
...
參數(shù)名2 [in/out/in out] 參數(shù)類型
)
return 返回值類型
as/is /*as 與 is任選一個(gè),表示函數(shù)體的開始,函數(shù)體書寫與變量聲明、編輯等雷同,區(qū)別在于沒(méi)有declare*/
...聲明區(qū)...
begin
... 編輯區(qū)...
return 返回值;?
end;
答:自定義函數(shù)求2個(gè)數(shù)最大值參考代碼如下
drop function fn_numberMax;
create function fn_numberMax(
v_a number,
v_b number
)
return number
as?
v_max number;
begin
if v_a>=v_b then
v_max:=v_a;
else
v_max:=v_b;
end if;
return v_max;
end;
/
調(diào)用求最大值函數(shù)
select upper('abc') from dual;
select fn_numberMax(10,2) from dual;
2.根據(jù)工資計(jì)算個(gè)人所得稅
drop function fn_money;
create function fn_money(
v_sal emp.sal%type
)
return number
as
v_m number;
begin
if v_sal <= 800 then
v_m:=0;
elsif v_sal<=1500 then
v_m:=(v_sal-800)*0.03;
elsif v_sal<=3000 then
v_m:=(v_sal-1500)*0.25+21;
else
v_m:=(v_sal-3000)*0.3+21+375;
end if;
return v_m;
end;
顯示每個(gè)員工工號(hào)、姓名、工資、個(gè)稅
select empNo,eName,sal,fn_money(sal) money from emp;