CREATE CONVERSION

CREATE CONVERSION — определить новую перекодировку

Синтаксис

CREATE [ DEFAULT ] CONVERSION имя
    FOR исходная_кодировка TO целевая_кодировка FROM имя_функции

Описание

Команда CREATE CONVERSION определяет новую перекодировку набора символов. Кроме того, перекодировки, отмеченные как DEFAULT, могут использоваться для автоматической перекодировки между клиентом и сервером. Для этого необходимо определить две перекодировки — из кодировки A в B и из кодировки B в A.

Чтобы создать перекодировку, необходимо иметь право EXECUTE для реализующей функции и право CREATE в целевой схеме.

Параметры

DEFAULT

Предложение DEFAULT указывает, что эта перекодировка является перекодировкой по умолчанию для заданной исходной кодировки в кодировку назначения. В схеме для пары перекодировок должна быть только одна перекодировка по умолчанию.

имя

Имя перекодировки (может быть дополнено схемой). Если схема не указана, перекодировка создается в текущей схеме. Имя перекодировки должно быть уникальным в пределах схемы.

исходная_кодировка

Имя исходной кодировки.

целевая_кодировка

Имя целевой кодировки.

имя_функции

Функция, используемая для выполнения перекодировки. Имя функции может быть дополнено схемой. Если это не так, для поиска функции просматривается путь поиска.

Функция должна иметь следующую сигнатуру:

conv_proc(
    integer,  -- идентификатор исходной кодировки
    integer,  -- идентификатор целевой кодировки
    cstring,  -- исходная строка (строка, завершающаяся 0, как в C)
    internal, -- целевая строка (заполняется строкой, завершающейся 0, как в C)
    integer   -- длина исходной строки
) RETURNS void;

Примечания

Как исходная, так и конечная кодировки должны отличаться от SQL_ASCII, поскольку поведение сервера в случаях использования «кодировки» SQL_ASCII является аппаратным.

Для удаления пользовательских перекодировок используйте команду DROP CONVERSION.

Права доступа, необходимые для создания перекодировки, могут быть изменены в будущих версиях.

Примеры

Создание перекодировки из кодировки UTF8 в LATIN1 с использованием функции myfunc:

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

Совместимость

Команда CREATE CONVERSION является расширением QHB. В стандарте SQL нет команды CREATE CONVERSION, но есть команда CREATE TRANSLATION, которая очень похожа по назначению и синтаксису.

См. также

ALTER CONVERSION, CREATE FUNCTION, DROP CONVERSION