使用者自定義函式是儲存在資料庫中的**塊,可以把值返回到呼叫程式。函式的引數有3種型別:
(1)in引數型別:表示輸入給函式的引數,該引數只能用於傳值,不能被賦值。
(2)out引數型別:表示引數在函式中被賦值,可以傳給函式呼叫程式,該引數只能用於賦值,不能用於傳值。
(3)in out引數型別:表示引數既可以傳值,也可以被賦值。
1.函式的建立
語法格式:
create [or replace] function functionname
( parametername1 mode1 datatype1,
parametername2 mode2 datatype2,
...) return returndatatype
is/as
begin
function_body
return expression
end functionname; -- 結束函式的宣告,也可以直接寫end不加函式名。
--其中mode1、mode2表示引數型別,datatype表示引數的資料型別。returndatatype表示返回值型別。
示例1:
create or replace function explainparameter -- 定義乙個名為explainparameter的函式
( inparam in char, -- 定義該引數型別為in引數型別,只能用於賦值
outparam out char, -- out引數型別,只能用於傳值
inandoutparam in out char -- in out引數型別,既能賦值,又能傳值
) return char -- 表示函式的返回型別為char型別
as -- 表示函式體部分
returnchar char; -- 宣告零時變數,這是可有可無的,這裡宣告返回變數為char型別的returnchar變數。
begin
inparam := 'hello world'; -- 這是錯誤的,in型別的引數只能用來傳值,不能賦值
outparam := 'hello world'; -- 這是正確的,out型別的引數可以用來被賦值
inandoutparam := 'hello world'; -- 這是正確的,in out引數既可以用來傳值,又可以被賦值
inandoutparam := outparam; -- 這是錯誤的,out引數不能用來傳值
return(returnchar); -- 返回returnchar,也可以不要括號,直接寫return returnchar。
end explainparameter; -- 結束explainparameter函式,表示explainparameter函式宣告結束,也可以直接寫end,不加函式名。
示例2:
create or replace
function testfunc (num1 in number, num2 in number)
return number
asnum3 number;
num4 number;
num5 number;
begin
num3 := num1 + num2;
num4 := num1 * num2;
num5 := num3 * num4;
return num5;
end;
2.函式的呼叫
自定義函式的呼叫方法跟系統內建函式的呼叫方法相同,可以直接在select語句中呼叫,也可以在函式中呼叫,如下:
select testfunc(1,2) from tablename;
num := testfunc(1,2);
3.函式的刪除
自定義函式的刪除方法類似於表的刪除,語法格式如下:
drop function [schema.]functionname;
Oracle 10使用者自定義函式
使用者自定義函式是儲存在資料庫中的 塊,可以把值返回到呼叫程式。函式的引數有3種型別 1 in引數型別 表示輸入給函式的引數,該引數只能用於傳值,不能被賦值。2 out引數型別 表示引數在函式中被賦值,可以傳給函式呼叫程式,該引數只能用於賦值,不能用於傳值。3 in out引數型別 表示引數既可以傳...
使用者自定義函式
create function 架構名.function name 傳入變數1 變數 型別,傳入變數2 變數 型別.returns return date type asbegin declare the return variable here declare variable1 variable...
使用者自定義函式
舉例來說明 cat datafile northwest nw joel craig 3.0 98 3 4 western we sharon kelly 5.3 97 5 23 southwest sw chris foster 2.7 8 2 18 southern so may chin 5....