CREATE CONVERSION — Définir une nouvelle conversion d'encodage
CREATE [ DEFAULT ] CONVERSIONnom
FORcodage_source
TOcodage_dest
FROMnom_fonction
CREATE CONVERSION
définit une nouvelle conversion entre
les encodages de caractères.
Les conversions marquées DEFAULT
peuvent être utilisées
pour automatiser une conversion d'encodage entre le client et le serveur.
Pour cela, deux conversions, de l'encodage A vers l'encodage B
et de l'encodage B vers l'encodage A, doivent être
définies.
Pour créer une conversion, il est nécessaire de posséder les droits
EXECUTE
sur la fonction et
CREATE
sur le schéma de destination.
DEFAULT
La clause DEFAULT
indique une conversion par
défaut entre l'encodage source et celui de destination. Il ne peut
y avoir, dans un schéma, qu'une seule conversion par défaut pour un couple d'encodages.
nom
Le nom de la conversion. Il peut être qualifié du nom du schéma. Dans la cas contraire, la conversion est définie dans le schéma courant. Le nom de la conversion est obligatoirement unique dans un schéma.
codage_source
Le nom de l'encodage source.
codage_dest
Le nom de l'encodage destination.
nom_fonction
La fonction utilisée pour réaliser la conversion. Son nom peut être qualifié du nom du schéma. Dans le cas contraire, la fonction est recherchée dans le chemin.
La fonction a la signature suivante :
conv_proc( integer, -- ID encodage source integer, -- ID encodage destination cstring, -- chaîne source (chaîne C terminée par un caractère nul) internal, -- destination (chaîne C terminée par un caractère nul) integer, -- longueur de la chaîne source boolean -- si true, ne renvoie pas une erreur si la conversion échoue ) RETURNS integer;
La valeur renvoyée est le nombre d'octets de la source qui ont été convertis avec succès. Si le dernier argument vaut false, la fonction doit renvoyer une erreur en cas d'entrée invalide, et la valeur de retour est toujours égale à la longueur de la chaîne source.
Ni l'encodage source ni l'encodage destination ne peuvent être
SQL_ASCII
, car le comportement du serveur pour les cas
impliquant l'encodage SQL_ASCII
« encoding »
est codé en dur.
DROP CONVERSION
est utilisé pour supprimer une conversion
utilisateur.
Il se peut que les droits requis pour créer une conversion soient modifiées dans une version ultérieure.
Création d'une conversion de l'encodage UTF8
vers l'encodage
LATIN1
en utilisant mafonc
:
CREATE CONVERSION maconv FOR 'UTF8' TO 'LATIN1' FROM mafonc;
CREATE CONVERSION
est une extension
PostgreSQL. Il n'existe pas d'instruction
CREATE CONVERSION
dans le standard SQL. Par contre, il
existe une instruction CREATE TRANSLATION
qui est très
similaire dans son but et sa syntaxe.