文法
CREATE [OR REPLACE] FUNCTION function_name [(
parameter_1 [IN] [OUT] data_type,
parameter_2 [IN] [OUT] data_type,
parameter_N [IN] [OUT] data_type]
RETURN return_data_type IS
--the declaration statements
BEGIN
-- the executable statements
return return_data_type;
EXCEPTION
-- the exception-handling statements
END;
1.FUNCTION FUNCTION_NAME関数名キーワードが指定されている、慣例により、関数名は、例えばconvert_to_num、動詞で始まる必要があります
。2.関数がゼロ以上のパラメータを有していてもよく、parameter_1で、parameter_2は、パラメータ名を指定し、など、DATA_TYPEに明確でなければなりません各パラメータのデータ型を指定し、各パラメータは、3つのモードのいずれかです。ででは、OUTとOUTは
-パラメータのモードパラメータが読み込まれる試みがINパラメータ値の機能を変更する場合、コンパイラはエラーメッセージを発行します、定数、リテラル、変数、または式を話すことができるで関数にパラメータとして渡された初期化するために
- OUTモードパラメータ前書き込み専用パラメータ、呼び出しプログラムに値を返すために使用OUTパラメータ、関数に渡された関数は、パラメータをOUT開始したときデフォルト値は関係なく、元の値の、その型に初期化され
、関数の値は、中から機能を読み出すことを意味し、OUTのパラメータを読み込み、パラメータを記述している、その値を変更し、呼び出しプログラムに返します-
3。関数は、少なくとも部分的に機能ヘッダrrturn句は、戻り値のデータ型を指定し、returnステートメントに実行されなければなりません
例
以下の要件を満たし機能書く:
1.入力パラメータを
デフォルト値ではありません値の入力を開始-
-終了値にはデフォルトの入力値ではありません
。2.戻り値:値
3.呼び出しは、
プロシージャを実行し、最後に開始から得られた値積算結果の値(例:関数入力パラメータは1から50であり、累積値= 1275の1〜50の結果)
create or replace function custom_sum(startnum in number, endnum in number)
return number is
i number;
re number;
begin
i := startnum;
re := 0;
while i <= endnum loop
re := re + i;
i := i + 1;
end loop;
return re;
end;
PL / SQL関数を呼び出し
PL / SQL関数は、値を返すので、割り当てに右またはSELECT文で使用することができ
、上記custom_sum()関数を使用して、無名ブロックを作成します
declare
re number;
begin
re := custom_sum(1, 50);
dbms_output.put_line(re);
end;
1275年の結果を取得します