PL/pgSQL使用可能チェック

標準インストール状態では、PL/pgSQL は使用できないようである。create function の language 'plpgsql' で、次のエラーが出るときは、createlang されていない可能性がある。

Unrecognized language specified in a CREATE FUNCTION: 'plpgsql'.
Pre-installed languages are SQL, C, and internal.
Additional languages may be installed using 'createlang'.


・PL/pgSQL が使用可能かは、次のように調べる。

select * from pg_language;

 lanname  | lanispl | lanpltrusted | lanplcallfoid | lancompiler
----------+---------+--------------+---------------+-------------
 internal | f       | f            |             0 | n/a
 C        | f       | f            |             0 | /bin/cc
 sql      | f       | f            |             0 | postgres

・plpgsqlがなければ、コマンドで次のように入力する。
エラーなしで終了すれば、OK。

createlang -h 127.0.0.1 -d sak -U administrator plpgsql
                           |      |             |_ 言語 plpgsql
                           |      |_ 管理者ユーザ
                           |_ データベース

・再度 psql で、インストールされたか確認する。

select * from pg_language;

 lanname  | lanispl | lanpltrusted | lanplcallfoid | lancompiler
----------+---------+--------------+---------------+-------------
 internal | f       | f            |             0 | n/a
 C        | f       | f            |             0 | /bin/cc
 sql      | f       | f            |             0 | postgres
 plpgsql  | t       | t            |         16577 |

これで、PL/pgSQL が使用できる。