YAMAGUCHI::weblog

海水パンツとゴーグルで、巨万の富を築きました。カリブの怪物、フリーアルバイター瞳です。

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

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

% \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オプションをつけて、返り値型にテーブル名(ビュー名)を書いてやればよい。