Oracle 創建函數實例

1、創建函數
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;
發佈了98 篇原創文章 · 獲贊 1 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章