YAMAGUCHI::weblog

土足で窓から失礼いたします。今日からあなたの息子になります。 当年とって92歳、下町の発明王、エジソンです。

ストアドプロシージャ 宣言

ストアドプロシージャ(ストアドファンクション)を作成するときはいったんファイルに作成して、コンソールで

% \i 'FILE_PATH'

とするのが吉。まず大枠として関数は以下のような形で作成する。OR REPLACEをつけているのは、関数を変更したときにいちいちDROP FUNCTIONをしなくてもいいようにするため。

CREATE OR REPLACE FUNCTION function_name ( arg_type,[arg_type],...)
RETURNS [SETOF] return_type AS
'
DECLARE
	declarations

BEGIN
	statements
END;
'
LANGUAGE 'plpgsql';

複数行の結果を返したい場合はSETOFオプションをつけるとよい。またreturn_typeとしてはふつうの変数型の他に、テーブルorビューの行も扱える。従って、通常のSELECT文の様に結果を返したい場合はSETOFオプションをつけて、返り値型にテーブル名(ビュー名)を書いてやればよい。