関数はストアドプロシージャと完全に同じですが、唯一の違いは関数が実行終了後に値を返す点であり、ストアドプロシージャは返しません。
関数の構造
関数の構造は以下のとおりです。ストアドプロシージャと比較して、関数を作成する際に戻り値の型を宣言する必要があります。
FUNCTION name [ ( parameter_list ) ] RETURN sp_type
{ IS | AS }
[ declarative_part ]
BEGIN -- executable part begins
statement; [ statement; ]...
[ EXCEPTION ]
exception_handler; [ exception_handler; ]... ]
END;
関数の作成
CREATE FUNCTION ステートメントを使用して関数を作成します。構文は以下のとおりです。
CREATE OR REPLACE FUNCTION func RETURN INT
IS
BEGIN
RETURN 1;
END;
/
パッケージ内で関数を作成する構文は以下のとおりです。
CREATE OR REPLACE PACKAGE pack IS
FUNCTION func RETURN INT;
END;
/
CREATE OR REPLACE PACKAGE BODY pack IS
FUNCTION func RETURN INT
IS
BEGIN
RETURN 1;
END;
END;
/
サブプログラム内で関数を定義する構文は以下のとおりです。
DECLARE
FUNCTION func RETURN INT
IS
BEGIN
RETURN 1;
END;
BEGIN
NULL;
END;
/