CREATE CONVERSION — definir una nueva conversión de codificación
CREATE [ DEFAULT ] CONVERSIONnameFORsource_encodingTOdest_encodingFROMfunction_name
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.
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.
nameEl 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_encodingEl nombre de la codificación de origen.
dest_encodingEl nombre de la codificación de destino.
function_nameLa 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.
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.
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;
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.