まず通常の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...となる。