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. 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.
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 ) 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.