他のバージョンの文書 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

CREATE LANGUAGE

Name

CREATE LANGUAGE -- 新しい手続き言語を定義

Synopsis

CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE langname
    HANDLER call_handler

説明

PostgreSQLユーザは、 CREATE LANGUAGEを使って新しい言語を PostgreSQLに登録することができます。これにより、関数とトリガプロシージャはこの新しい言語で定義可能になります。ユーザは新しい言語を登録するためには PostgreSQLのスーパーユーザ権限を持っていなければいけません。

CREATE LANGUAGE は効率的に言語名と、その言語で作成された関数の実行に責任をもつ呼び出しハンドラを関連づけます。言語呼び出しハンドラについてのより詳細は プログラマガイド を参照して下さい。

手続き言語は各データベースに局所的なものであることに注意して下さい。デフォルトで全てのデータベースで使用できる言語を作成するためには、 template1 データベースにインストールされなければなりません。

パラメータ

TRUSTED

TRUSTEDは、その言語の呼び出しハンドラが安全であることを指定します。つまり、権限を持たないユーザにはアクセス制限を無視する機能を何も与えないということです。もし言語を登録するときにこのキーワードが省略されると、 PostgreSQLのスーパーユーザ権限を持つユーザのみが新しい関数を作るためにこの言語を使うことができるようになります。

PROCEDURAL

この単語はノイズです。

langname

新しい手続き言語の名前です。言語名は大文字/小文字の区別がありません。手続き言語はどのPostgreSQLの組み込み言語をも上書きすることはできません。

後方互換のために、この名前は単一引用符で括る必要があります。

HANDLER call_handler

call_handlerは、事前に登録されていた関数の名前で、この手続き言語の関数を実行するために呼び出されるものです。手続き言語用の呼び出しハンドラは、C言語のようなコンパイル言語でバージョン1 呼び出し規約を使用して作成し、 PostgreSQL に引数をとらない、未指定、未定義型のプレースホルダを示す、opaque 型を返す関数として登録されなければなりません。

診断

CREATE
このメッセージは言語の作成に成功した場合に返されます。
ERROR:  PL handler function funcname() doesn't exist
このエラーは、関数funcname()が見つからない場合に返されます。

注釈

通常このコマンドはユーザが直接実行するものではありません。 PostgreSQL 配布物に含まれる手続き言語では、 createlang スクリプトが使用されなければなりません。これは正確な呼び出しハンドラのインストールも行ないます。(createlang は内部的に CREATE LANGUAGE を呼び出します。)

新しい関数を作成するには、 CREATE FUNCTION コマンドを使用して下さい。

手続き言語を削除するには、 DROP LANGUAGE を使用して下さい。droplang スクリプトを使用する方が良いでしょう。

pg_language システムカタログは現時点でインストールされた手続き言語の情報を記録します。

        Table "pg_language"
   Attribute   |  Type   | Modifier
---------------+---------+----------
 lanname       | name    |
 lanispl       | boolean |
 lanpltrusted  | boolean |
 lanplcallfoid | oid     |
 lancompiler   | text    |

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

現在、作成済みの手続き言語の定義を変更することはできません。

以下の続けて実行される 2 コマンドは新しい手続き言語と関連する呼び出しハンドラを登録します。

CREATE FUNCTION plsample_call_handler () RETURNS opaque
    AS '$libdir/plsample'
    LANGUAGE C;
CREATE LANGUAGE plsample
    HANDLER plsample_call_handler;

互換性

CREATE LANGUAGEPostgreSQLの拡張です。

歴史

CREATE LANGUAGE コマンドは PostgreSQL 6.3 から追加されました。

関連項目

createlang, CREATE FUNCTION, droplang, DROP LANGUAGE, PostgreSQL プログラマガイド