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
,
которая очень похожа по назначению и синтаксису.