一:說明
Oracle數據庫本身預置了很多函數,如日期函數,字符串函數,數值函數等,當這些預置的函數無法滿足業務的要求時,我們可以自定義函數來解決問題。
二:語法
create [or replace] function 函數名(參數1 類型,參數2 類型,......)
return 類型
is
--變量聲明區
begin
--業務邏輯區
return 值;
end;
/
三:練習
判斷一個數,如果大於0,就返回1,如果小於0,就返回-1,如果等於=0,就返回0。
create or replace function check(num number)
return number
is
begin
if num>0 then
return 1;
elsif num<0 then
return -1;
else
return 0;
end if;
end;
/
--plsql調用
begin
dbms_output.put_line(3);
end;
/
四:函數參數
同樣有in,out,in out 屬性,其規則與存儲過程一樣。
-->練習:計算兩個數字的和,並返回這個數字。
create or replace function sum(a in out number,b in out number)
return number
is
begin
if a is null then
a:=0;
if b is null then
b:=0;
end if;
return a+b;
end;
/
--調用
declare
s number;
a number:=1;
b number:=2;
begin
s:=sum(a,b);
dbms_output.put_line(s);
end;
/
五:存儲過程與函數的選擇
1)如果進行DML操作,選擇存儲過程。
2)如果沒有DML操作,考慮選擇函數。