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, -- длина иÑÑ Ð¾Ð´Ð½Ð¾Ð¹ ÑÑÑоки 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 ÑвлÑеÑÑÑ ÑаÑÑиÑением PostgreSQL. Ð ÑÑандаÑÑе SQL оÑÑÑÑÑÑвÑÐµÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ CREATE CONVERSION, но еÑÑÑ Ð¾ÑÐµÐ½Ñ Ð¿Ð¾Ñ
ожий по пÑедназнаÑÐµÐ½Ð¸Ñ Ð¸ ÑинÑакÑиÑÑ Ð¾Ð¿ÐµÑаÑÐ¾Ñ CREATE TRANSLATION.