使用者自訂函數是儲存在資料庫中的代碼塊,可以把值返回到調用程式。函數的參數有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 AS num3 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;
查看本欄目更多精彩內容:http://www.bianceng.cnhttp://www.bianceng.cn/database/Oracle/