CREATE CONVERSION — создание нового преобразования кодировок
CREATE [ DEFAULT ] CONVERSIONnameFORsource_encodingTOdest_encodingFROMfunction_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, -- исходная строка (C-строка, завершающаяся нулём)
internal, -- приёмник результата (заполняется C-строкой, завершающейся нулём)
integer, -- длина исходной строки
boolean -- если true, не вызывать ошибку при сбое преобразования
) RETURNS integer;
Возвращаемое значение — количество исходных байтов, успешно преобразованных. Если последний аргумент равен false, функция должна вызывать ошибку при неверном вводе, и возвращаемое значение всегда равно длине исходной строки.
Ни исходная, ни целевая кодировка не могут быть SQL_ASCII, так как поведение сервера в случаях, связанных с этой «кодировкой» SQL_ASCII, жёстко зашито.
Используйте команду DROP CONVERSION для удаления пользовательских преобразований.
Привилегии, необходимые для создания преобразования, могут быть изменены в будущих выпусках.
Чтобы создать преобразование из кодировки UTF8 в LATIN1 с использованием функции myfunc:
CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;
Команда CREATE CONVERSION является расширением Digital Q.DataBase.
В стандарте SQL нет оператора CREATE CONVERSION, но есть оператор CREATE TRANSLATION, который очень близок по назначению и синтаксису.