CREATE CONVERSION#
CREATE CONVERSION
CREATE CONVERSION — определить новое преобразование кодировки
Синтаксис
CREATE [ DEFAULT ] CONVERSIONname
FORsource_encoding
TOdest_encoding
FROMfunction_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 BE.
В стандарте SQL нет оператора CREATE CONVERSION
, но есть оператор CREATE TRANSLATION
, который очень похож по назначению и синтаксису.