CREATE CONVERSION — Définir une nouvelle conversion d'encodage
CREATE [ DEFAULT ] CONVERSIONnomFORcodage_sourceTOcodage_destFROMnom_fonction
CREATE CONVERSION définit une nouvelle conversion entre
les encodages de caractères. De plus, 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.
nomLe 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_sourceLe nom de l'encodage source.
codage_destLe nom de l'encodage destination.
nom_fonctionLa 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
) RETURNS void;
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.