Oracle 自定義函式語法與例項

2021-09-29 12:32:08 字數 2533 閱讀 9016

oracle自定義函式的語法如下:

create

orreplace

function 函式名(引數

1 模式 引數型別)

return 返回值型別

as變數

1 變數型別;

變數2 變數型別;

begin

函式體;

end 函式名;

引數的模式有3種:(如果沒有註明, 引數預設的型別為 in.)in: 為唯讀模式, 在函式中, 引數的值只能被引用, 不能被改變;

out: 為只寫模式, 只能被賦值, 不能被引用;

in out:  可讀可寫.

1.在oracle自定義函式中, else if 的正確寫法是 elsif 而不是 else if

2.使用 if 需要加 then  "if 條件 then 操作"

簡單的例子:讀入兩個值, 返回比較大的值

create

orreplace

function function1(para1

innumber, para2

innumber)

return

number

asbegin

if para1 > para2

then

return para1;

else

return para2;

endif;

end function1;

使用:

select function1(666, 333) from dual;

結果:

另乙個例子可能在實際中會用到, 有時候我們需要按非自然月進行資料統計, 這種時候我們只需要寫乙個自定義的函式處理日期就行了.

函式說明: 讀入date型日期, 大於15號的歸入下乙個月, 小於等於15號歸入本月

create

orreplace

function fn_mymonth(oridate

indate)

return varchar2

asoriday

number;

orimonth number;

oriyear number;

begin

oriday := to_number(to_char(oridate,

'dd'));

orimonth := to_number(to_char(oridate, 'mm'));

oriyear := to_number(to_char(oridate, 'yyyy'));

if oriday <= 15 then

--少於等於15號屬於本月

return to_char(oridate, 'yyyymm');

else

if orimonth <= 8 then

-- 日 <=8 則+1後轉char還要補0,單獨出來作為一種情況

return to_char(oriyear)||'0'||to_char(orimonth + 1);

elsif( orimonth <= 11 ) then

-- 日 <= 11則+1後不會跨年,轉char不需要補零, 單獨出來作為一種情況

return to_char(oriyear)||to_char(orimonth + 1);

else

-- 最後一種情況就是跨年, 改變年份, 月份補零就行

return to_char(oriyear + 1)||'0'||to_char(orimonth - 11);

endif;

endif;

end fn_mymonth;

使用與結果:

select fn_mymonth(to_date('2015-12-14', 'yyyy-mm-dd')) from dual;

select fn_mymonth(to_date('2015-12-15', 'yyyy-mm-dd')) from dual;

select fn_mymonth(to_date('2015-12-16', 'yyyy-mm-dd')) from dual;

Oracle自定義函式

語法如下 create or replace function function name argment type,argment type return return type 返回資料的型別 變數的申明,比如 stryuan varchar2 150 begin function body 函...

oracle 自定義函式

下面是乙個前輩寫的判斷是否是手機號的函式 create or replace function ismobile pmsg varchar2 return number isvprefix varchar2 20 vlen number begin vlen lengthb pmsg if vlen...

Oracle自定義函式

二 刪除自定義函式 三 應用經驗 在oracle資料庫中,為了實現特定的功能,可以自定義函式,就像c c 語言,除了系統的庫函式,程式設計師還會編寫很多自定義的函式。create or replace function 函式名 引數1 模式 資料型別,return 資料型別 as 定義區域性變數。變...