CREATE [DEFAULT] CONVERSION nome FOR codificação_de_origem TO codificação_de_destino FROM nome_da_função
O comando CREATE CONVERSION cria uma conversão entre codificações de conjunto de caracteres. Os nomes das conversões podem ser utilizados na função convert para especificar uma determinada conversão de codificação. Além disso, as conversões marcadas como DEFAULT podem ser utilizadas para fazer a conversão automática de codificação entre o cliente e o servidor. Para esta finalidade devem ser criadas duas conversões: da codificação A para B, e da codificação B para A. [1] [2]
Para poder criar uma conversão é necessário possuir o privilégio EXECUTE na função, e o privilégio CREATE no esquema de destino.
A cláusula DEFAULT indica que esta é a conversão padrão para o caso particular desta codificação de origem e de destino. Em um esquema deve existir apenas uma conversão de codificação padrão para cada par de codificações.
O nome da conversão. O nome da conversão pode ser qualificado pelo esquema. Caso não seja, a conversão é criada no esquema corrente. O nome da conversão deve ser único no esquema.
O nome da codificação de origem.
O nome da codificação de destino.
A função utilizada para realizar a conversão. O nome da função pode ser qualificado pelo esquema. Caso não seja, a função é procurada no caminho.
A função deve possuir a seguinte assinatura:
funcao_de_conversao( integer, -- identificador da codificação de origem integer, -- identificador da codificação de destino cstring, -- cadeia de caracteres de origem (cadeia de caracteres C terminada por nulo) cstring, -- cadeia de caracteres de destino (cadeia de caracteres C terminada por nulo) integer -- comprimento da cadeia de caracteres de origem ) RETURNS void;
Deve ser utilizado o comando DROP CONVERSION para remover conversões criadas pelo usuário.
Os privilégios necessários para criar conversão podem ser alterados em uma versão futura.
Para criar a conversão da codificação UNICODE para LATIN1 utilizando minha_funcao:
CREATE CONVERSION minha_conversao FOR 'UNICODE' TO 'LATIN1' FROM minha_funcao;
O comando CREATE CONVERSION é uma extensão do PostgreSQL. Não existe o comando CREATE CONVERSION no padrão SQL.
[1] |
4.6.2.3 — Transliterações — A transliteração é uma operação com nome para fazer o mapeamento de uma cadeia de caracteres de algum conjunto de caracteres para outra cadeia de caracteres de um dado, não necessáriamente distinto, conjunto de caracteres. A operação é realizada pela chamada de uma função externa identificada pelo nome da transliteração. Uma vez que toda a cadeia de caracteres é passada para a função, e é retornada uma cadeia de caracteres, o mapeamento não é feito necessariamente de um caractere para outro caractere, podendo ser de uma seqüência de um ou mais caracteres para outra seqüência de um ou mais caracteres. (ISO-ANSI Working Draft) Framework (SQL/Framework), August 2003, ISO/IEC JTC 1/SC 32, 25-jul-2003, ISO/IEC 9075-1:2003 (E) (N. do T.) |
[2] |
transliterar — escrever com um sistema de caracteres (algo escrito com outro). Dicionário Eletrônico Houaiss da língua portuguesa 1.0 |