CREATE CONVERSION#

CREATE CONVERSION

CREATE CONVERSION

CREATE CONVERSION — определить новое преобразование кодировки

Синтаксис

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

Описание

CREATE CONVERSION определяет новое преобразование между двумя кодировками символов.

Все преобразования, помеченные тегом DEFAULT, могут быть использованы для автоматического преобразования кодировки между клиентом и сервером. Для поддержки такого использования необходимо определить два преобразования: от кодировки A к B и от кодировки B к A.

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

Параметры

DEFAULT

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

name

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

source_encoding

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

dest_encoding

Имя кодировки назначения.

function_name

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

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

conv_proc(
    integer,  -- source encoding ID
    integer,  -- destination encoding ID
    cstring,  -- source string (null terminated C string)
    internal, -- destination (fill with a null terminated C string)
    integer,  -- source string length
    boolean   -- if true, don't throw an error if conversion fails
) RETURNS integer;

Значение, возвращаемое, является количеством успешно преобразованных байтов исходной строки. Если последний аргумент равен false, функция должна вызвать ошибку при недопустимом вводе, и возвращаемое значение всегда равно длине исходной строки.

Примечания

Ни исходная, ни целевая кодировка не могут быть SQL_ASCII, так как поведение сервера в случаях, связанных с кодировкой SQL_ASCII, зашито в коде.

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

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

Примеры

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

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

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

CREATE CONVERSION - это расширение Tantor SE. В стандарте SQL нет оператора CREATE CONVERSION, но есть оператор CREATE TRANSLATION, который очень похож по назначению и синтаксису.