二、刪除自定義函式
三、應用經驗
在oracle資料庫中,為了實現特定的功能,可以自定義函式,就像c/c++語言,除了系統的庫函式,程式設計師還會編寫很多自定義的函式。
create or replace function 函式名(引數1 模式 資料型別,..
....
)return 資料型別
as -- 定義區域性變數。
變數1 資料型別;..
....
begin
-- 實現函式功能的pl/sql**。
....
..exception
-- 異常處理的pl/sql**。
....
..end;
/
1)引數的模式有三種:
in:唯讀模式,在函式中,引數只能被引用/讀取,不能改變它的值。
out:只寫模式,引數只能被賦值,不能被引用/讀取。
in out:可讀可寫。
引數的模式可以不寫,預設為in,out和in out兩種模式極少使用。
2)as/is二選一,在這裡沒有區別。
3)可以不定義區域性變數。
4)可以沒有異常(exception)處理**段。
示例,建立自定義函式maxvalue,用於比較兩個數字的大小,返回較大值:
create or replace function maxvalue
(val1 number,val2 number)
return number
as val number;
-- 定義區域性變數,存放返回值。
begin
if(val1>val2) then -- 判斷傳入引數的大小。
val:
=val1;
-- 賦值是":=",不是"="。
else
val:
=val2;
end if
;return val;
-- 返回
自定義函式的呼叫與oracle資料庫自帶的函式呼叫的方法相同。
自定義函式是資料庫物件,oracle對它許可權管理方式與其它資料庫物件相同。
如果maxvalue函式是用scott使用者建立的,其它使用者呼叫時需要加scott使用者名稱字首,並且具備相應的許可權,否則會出現「ora-00904:"maxvalue": 識別符號無效
」的錯誤。
drop function 函式名;
例如:
drop function maxvalue;
資料庫的自定義函式不會像程式語言的函式那樣廣泛的應用,和程式語言相比,資料庫的自定義函式實在太麻煩,很囉嗦,難以除錯,資料庫自定義函式能做到的功能程式語言都能做到。
我使用自定義函式的目的只有乙個,就是解決不同資料庫的相容性問題,例如序列生成器,oracle、mysql和postgresql的呼叫方法各不同,那麼我們可以編寫自定義函式,在不同的資料庫中,函式名和引數完全相同,函式體**不同,這樣就可以解決軟體的相容性問題。
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 定義區域性變數。變...