create [or replace] function function_name
[(parameter_name [in | out | in out] type [,...])]
retutn type
is|as
begin
function_body;
end;
說明:函數必須有返回值。
or replace:如果函數已經存在,則替換現有的函數;
function_name:函數名;
parameter_name :參數名;
in | out | in out:指定參數的模式;
function_body:包含執行任務函數的SQL和PL/SQL語句。
2、函數實例
create or replace function get_publicholidaytime(fromtime in Date, totime in Date, isAvailable in number) return number
as
--定義變量
free_day number :=0;
mindate Date;
maxdate Date;
total number :=0;
fromdate Date := TO_DATE(to_char(fromtime,'yyyy/MM/dd'),'yyyy/MM/dd');
todate Date := TO_DATE(to_char(totime,'yyyy/MM/dd'),'yyyy/MM/dd');
begin
--if語句
if isAvailable=1 then
--sql語句
select min(calendar_date) ,max(calendar_date),count(calendar_date) into mindate,maxdate,total
from T_BI_TNT_DATE
where calendar_date between fromdate and todate
and IS_PUBLIC_HOLIDAY=1 ;
if mindate = fromdate then
total := total - 1;free_day := free_day + ((mindate + 1) - fromtime);
end if;
if maxdate = todate then
total := total - 1;free_day := free_day + (totime - maxdate);
end if;
if mindate = maxdate then
free_day := totime - fromtime;
else
free_day := free_day + total;
end if;
end if;
return free_day;
end get_publicholidaytime;
3、調用函數
select get_publicholidaytime(sysdate,sysdate + 1,1) from dual;
4、刪除函數
drop function get_publicholidaytime;