Documentation PostgreSQL 14.22 » Référence » Commandes SQL » CREATE CONVERSION

Précédent | Niveau supérieur | Suivant
CREATE COLLATION | Sommaire | CREATE DATABASE

## CREATE CONVERSION

CREATE CONVERSION — Définir une nouvelle conversion d'encodage

## Synopsis

    CREATE [ DEFAULT ] CONVERSION nom
        FOR codage_source TO codage_dest FROM nom_fonction

## Description

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

## Paramètres

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

## Notes

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.

## Exemples

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;

## Compatibilité

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

## Voir aussi

ALTER CONVERSION, CREATE FUNCTION, DROP CONVERSION