CREATE CONVERSION

CREATE CONVERSION — definir una nueva conversión de codificación

Synopsis

CREATE [ DEFAULT ] CONVERSION name
    FOR source_encoding TO dest_encoding FROM function_name

Descripción

CREATE CONVERSION define una nueva conversión entre dos codificaciones de juegos de caracteres.

Las conversiones marcadas como DEFAULT se pueden utilizar para la conversión automática de codificación entre cliente y servidor. Para admitir ese uso, se deben definir dos conversiones: de la codificación A a la B y de la codificación B a la A.

Para poder crear una conversión, debes tener el privilegio EXECUTE en la función y el privilegio CREATE en el esquema de destino.

Parámetros

DEFAULT

La cláusula DEFAULT indica que esta conversión es la predeterminada para esta codificación particular de origen a destino. Solo debe haber una conversión predeterminada en un esquema para el par de codificaciones.

name

El nombre de la conversión. El nombre de la conversión puede estar calificado por el esquema. Si no lo está, la conversión se define en el esquema actual. El nombre de la conversión debe ser único dentro de un esquema.

source_encoding

El nombre de la codificación de origen.

dest_encoding

El nombre de la codificación de destino.

function_name

La función utilizada para realizar la conversión. El nombre de la función puede estar calificado por el esquema. Si no lo está, la función se buscará en la ruta.

La función debe tener la siguiente firma:

conv_proc(
    integer,  -- ID de codificación de origen
    integer,  -- ID de codificación de destino
    cstring,  -- cadena de origen (cadena C terminada en nulo)
    internal, -- destino (llenar con una cadena C terminada en nulo)
    integer,  -- longitud de la cadena de origen
    boolean   -- si es true, no lanzar error si la conversión falla
) RETURNS integer;

El valor de retorno es el número de bytes de origen que se convirtieron con éxito. Si el último argumento es false, la función debe lanzar un error ante una entrada inválida, y el valor de retorno siempre es igual a la longitud de la cadena de origen.

Notas

Ni la codificación de origen ni la de destino pueden ser SQL_ASCII, ya que el comportamiento del servidor para los casos que involucran la «codificación» SQL_ASCII está predefinido en el sistema.

Usa DROP CONVERSION para eliminar conversiones definidas por el usuario.

Los privilegios requeridos para crear una conversión podrían cambiar en una futura versión.

Ejemplos

Para crear una conversión de la codificación UTF8 a LATIN1 utilizando la función myfunc:

CREATE CONVERSION myconv FOR 'UTF8' TO 'LATIN1' FROM myfunc;

Compatibilidad

CREATE CONVERSION es una extensión de PostgreSQL. No existe una instrucción CREATE CONVERSION en el estándar SQL, pero sí una instrucción CREATE TRANSLATION que es muy similar en propósito y sintaxis.

Consulte también

ALTER CONVERSION, CREATE FUNCTION, DROP CONVERSION