使用者定義函數是儲存在資料庫中的代碼塊,可以把值返回到調用程式。調用時如同系統函數一樣,如max(value)函數,其中,value被稱為參數。函數參數有3種類型。IN 參數類型:表示輸入給函數的參數。OUT 參數類型:表示參數在函數中被賦值,可以傳給函數調用程式。IN OUT參數類型:表示參數既可以傳值也可以被賦值。 1、文法格式:SQL文法方式建立的文法格式為:CREATE OR REPLACE FUNCTION function_name /**//*函數名稱*/
(
Parameter_name1,mode1 datatype1, /**//*參數定義部分*/
Parameter_name2,mode2 datatype2,
Parameter_name3,mode3 datatype3
…
)
RETURN return_datatype /**//*定義傳回值類型*/
IS/AS
BEGIN
Function_body /**//*函數體部分*/
RETURN scalar_expression /**//*返回語句*/
END function_name;
說明:function_name::使用者定義的函數名。函數名必須符合標示符的定義規則,對其所有者來說,該名在資料庫中是唯一的。parameter:使用者定義的參數。使用者可以定義一個或多個參數。mode:參數類型。datatype:使用者定義參數的資料類型。return_type::使用者傳回值的資料類型。函數返回scalar_expression運算式的值,function_body函數體由pl/sql語句構成。 2、樣本函數代碼:create or replace function T01001_count
return number
is
count_T01001 number;
begin
select count(*) into count_T01001 from T01001;
return(count_T01001);
end T01001_count; --記得一定要打分號
調用:
declare
i number;
begin
i:=T01001_count();
dbms_output.put_line(to_char(i));
end; --記得一定要打分號
注意:(1) 如果函數沒有參數,那麼函數名後不應該要括弧;(2) 建立函數的時候end後面一定要記得寫函數名;