他のバージョンの文書 16 | 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 CONVERSION

CREATE CONVERSION — 新しい符号化方式変換を定義する

概要

CREATE [ DEFAULT ] CONVERSION name
    FOR source_encoding TO dest_encoding FROM function_name

説明

CREATE CONVERSIONを使用すると、2つの文字セット符号化方式間の新しい変換を定義できます。

DEFAULTとして指定された変換は、クライアントとサーバの間での自動的な符号化方式の変換に使用できます。 そのような使い方をサポートするためには、符号化方式Aから符号化方式Bへ、および、符号化方式Bから符号化方式Aへという2つの変換を定義する必要があります。

変換を作成するためには、その関数のEXECUTE権限、および、対象となるスキーマ上のCREATE権限を保持している必要があります。

パラメータ

DEFAULT

DEFAULT句により、この変換が、指定された変換元から対象となる符号化方式への変換のデフォルトであることが示されます。 1つのスキーマ内でデフォルトとされる変換は、符号化方式の組み合わせ1組において1つだけです。

name

変換の名前です。 変換名は、スキーマ修飾することができます。 スキーマ修飾されていない場合、変換は現在のスキーマに定義されます。 変換名は、スキーマ内で一意である必要があります。

source_encoding

変換元の符号化方式名です。

dest_encoding

変換先の符号化方式名です。

function_name

この関数は、変換の実行に使用されます。 関数名は、スキーマ修飾することができます。 スキーマ修飾されていない場合、関数はパスから検索されます。

関数は、下記のような形式で記述する必要があります。

conv_proc(

    integer,  -- 変換元符号化方式ID
    integer,  -- 変換先符号化方式ID
    cstring,  -- 変換元文字列(NULLで終わるC言語文字列)
    internal, -- 変換先文字列(NULLで終わるC言語文字列)
    integer,  -- 変換元文字列長
    boolean   -- 真の場合、変換が失敗してもエラーにならない
) RETURNS integer;

戻り値は変換に成功した変換元のバイト数です。 最後の引数が偽であれば、関数は無効な入力をエラーにしなければならず、戻り値は常に変換元文字列長に等しいです。

注釈

SQL_ASCII符号化方式を含む場合のサーバの振る舞いは組み込まれたものですので、変換元の符号化方式も対象となる符号化方式もSQL_ASCIIとすることはできません。

ユーザ定義の変換を削除するには、DROP CONVERSIONを使用します。

変換の作成に必要な権限は、今後のリリースで変更される可能性があります。

myfunc関数を使用して、UTF8からLATIN1への符号化方式の変換を作成します。

CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;

互換性

CREATE CONVERSIONは、PostgreSQLの拡張です。 標準SQLにはCREATE CONVERSION文はありませんが、CREATE TRANSLATION文の目的および構文は非常に似たものです。

関連項目

ALTER CONVERSION, CREATE FUNCTION, DROP CONVERSION