YAMAGUCHI::weblog

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

ストアドプロシージャ 変数型

まず通常のSQL文でも用いる型の場合は

var_name [CONSTANT] type [NOT NULL] [:= expression];

定数ならCONSTANTオプション、初期値を設定するなら最後の様にあらかじめ代入をする。

次にPL/pgSQLでの型は

var_name table.column%TYPE;
var_name table%ROWTYPE;
var_name RECORD;
var_name refcursor

%TYPEではテーブルのある列の型を、%ROWTYPEではテーブルのレコード全体を型として扱える。またRECORD型は事前にデータ型を持たない。SELECT INTO文やカーソルのFETCH文などで結果を代入する時に用いる。またそのカーソルの宣言はrefcursor型で行う。

変数の宣言はDECLAREの直後に行う。この際に関数の引数に

var_name ALIAS FOR $1;

の様なエイリアスをかけておくと以後混乱しなくていい。なお引数は左から$1,$2...となる。