PL/pgSQL を使う
PostgreSQL で function を使う際には LANGUAGE 句で言語を指定する必要があります。このとき
LANGUAGE 'sql'
と、指定すると複雑な構文が利用できません。PL/pgSQL の機能を使いたい場合、以下のように指定します。
LANGUAGE 'plpgsql'
ですが、この LANGUAGE はデフォルトでは設定されていないため、別途作成する必要があります。
createlang plpgsql database
database には対象となるデータベース名を指定して下さい。
なお MacPorts からインストールした PostgreSQL では createlang のパスが通っていませんでした。以下がフルパスになります(PostgreSQL 8.1 の場合)。
/opt/local/lib/postgresql81/bin/createlang
また MacPorts の場合バージョン毎にユーザを分けて作成するため、コマンドを実行するユーザは postgres ではなく postgres81 のようなバージョンに応じたユーザになります。
sudo su postgres81 -c '/opt/local/lib/postgresql81/bin/createlang plpgsql database'