Oracle函式過載方法

2021-08-30 19:56:18 字數 2169 閱讀 9712

最近專案搞規則引擎,然後涉及到資料庫的日期比較,而業務鏈比較長,再加上動態表的日期資料存的都是字串,還有的業務表日期存的就是date型別資料,這樣一來無法選用to_char 或者 是to_date ,所以寫了個過載函式,直接返回的資料型別為date

我寫了個oracle函式過載的demo 拿出來分享下,如下

create or replace package myoverloadfunc as

--@author:lidongbo

function myfunc(p_param in number)

return varchar2;

pragma restrict_references(myfunc, wnds, rnds, wnps, rnps);

function myfunc(p_param in date)

return varchar2;

pragma restrict_references(myfunc, wnds, rnds, wnps, rnps);

function myfunc(p_param in varchar2)

return varchar2;

pragma restrict_references(myfunc, wnds, rnds, wnps, rnps);

function myfunc(p_param out varchar2)

return varchar2;

pragma restrict_references(myfunc, wnds, rnds, wnps, rnps);

function myfunc(p_parama in varchar2,p_paramb in number)

return varchar2;

pragma restrict_references(myfunc, wnds, rnds, wnps, rnps);

end myoverloadfunc ;

create or replace package body myoverloadfunc as

--@author:lidongbo

function myfunc(p_param in number)

return varchar2 is

begin

return 'number';

end myfunc;

function myfunc(p_param in date)

return varchar2 is

begin

return 'date';

end myfunc;

function myfunc(p_param in varchar2)

return varchar2 is

begin

return 'in varchar2';

end myfunc;

function myfunc(p_param out varchar2)

return varchar2 is

begin

return 'out varchar2';

end myfunc;

function myfunc(p_parama in varchar2,p_paramb in number)

return varchar2 is

begin

return 'varchar2 , number ';

end myfunc;

end myoverloadfunc;

客戶程式

select myoverloadfunc.myfunc(999) from dual;

--結果:number

select myoverloadfunc.myfunc(sysdate) from dual;

--結果:date

select myoverloadfunc.myfunc('string') from dual;

--異常,原因不支援同個數同型別引數而in out 不同過載

select myoverloadfunc.myfunc('string',999) from dual;

--結果:varchar2 , number

oracle 函式 實現過載 C 函式過載

一 函式過載的概念 在實際開發中,有時候我們需要實現幾個功能類似的函式,例如把變數的值寫入檔案,變數的型別可能是int long double char,通過引數把變數傳入函式。在c語言中不允許函式同名,程式設計師只能設計出四個不同名的函式,其函式宣告如下 bool writetofile int ...

mysql 函式過載 C 方法過載(函式過載)

在講解 c 構造方法 時提到定義構造方法時提到可以定義帶 0 到多個引數的構造方法,但構造方法的名稱必須是類名。實際上,這就是乙個典型的方法過載,即方法名稱相同 引數列表不同。引數列表不同主要體現在引數個數或引數的資料型別不同。在呼叫過載的方法時系統是根據所傳 遞引數的不同判斷呼叫的是哪個方法。例項...

方法(函式) 過載 陣列

一 方法 函式 public static 返回值型別或void 方法名 資料型別 變數名1,資料型別 變數名2,資料型別 變數名 返回型 void 沒有返回值時就使用void 但可用return 來終止程式。有返回值時 不能用return return 返回值一定要和返回值型別匹配。二 方法過載 ...