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;
Примечания
Для удаления перекодировок, созданных пользователем, применяется DROP CONVERSION
.
Набор прав, требуемых для создания перекодировки, может измениться в будущих версиях.
Примеры
Создание перекодировки из кодировки UTF8
в LATIN1
с использованием функции myfunc
:
CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;
Совместимость
Оператор CREATE CONVERSION
является расширением Postgres Pro. В стандарте SQL отсутствует оператор CREATE CONVERSION
, но есть очень похожий по предназначению и синтаксису оператор CREATE TRANSLATION
.