La fonction principale doit être déclarée comme illustrée
          ici. Notez que le type de retour et les paramètres
          diffèrent, suivant que vous voulez déclarer une fonction SQL
          XXX() qui retournera une
          STRING, un INTEGER ou un
          REAL dans la commande CREATE
          FUNCTION :
        
          Pour les fonctions de chaînes STRING :
        
char *xxx(UDF_INIT *initid, UDF_ARGS *args,
          char *result, unsigned long *length,
          char *is_null, char *error);
          Pour les fonctions d'entiers INTEGER :
        
long long xxx(UDF_INIT *initid, UDF_ARGS *args,
              char *is_null, char *error);
          Pour les fonctions de nombres à virgule flottante
          REAL :
        
double xxx(UDF_INIT *initid, UDF_ARGS *args,
              char *is_null, char *error);
Les fonctions d'initialisation et de terminaison sont déclarées comme ceci :
my_bool xxx_init(UDF_INIT *initid, UDF_ARGS *args, char *message); void xxx_deinit(UDF_INIT *initid);
          Le paramètre initid est passé aux trois
          fonctions. Il pointe sur une structure
          UDF_INIT qui est utilisée pour communiquer
          des informations entre les fonctions. Les membres de la
          structure UDF_INIT sont ceux qui sont
          listés ci-dessous. La fonction d'initialisation doit
          préparer les membres qu'elle veut, et notamment leur donner
          une valeur initiale (pour utiliser les valeurs par défaut,
          laissez le membre intact) :
        
              my_bool maybe_null
            
              xxx_init() doit remplacer
              maybe_null par 1 si
              xxx() peut retourner
              NULL. La valeur par défaut est
              1 si l'un des arguments n'est déclaré
              comme maybe_null.
            
              unsigned int decimals
            
              Le nombre de décimales. La valeur par défaut est le
              nombre maximum de décimales dans l'argument passé à la
              fonction. Par exemple, vis la fonction re¸oit
              1.34, 1.345 et
              1.3, ce nombre sera 3, car
              1.345 a 3 décimales.
            
              unsigned int max_length
            
              La taille maximale de la chaîne résultat. La valeur par
              défaut dépend du type de résultat de la fonction. Pour
              les fonctions de chaînes, la valeur par défaut est la
              taille du plus grand argument. Pour les fonctions
              entières, la valeur est de 21 chiffres. Pour les
              fonctions à nombre à virgule flottante, la valeur est de
              13, plus le nombre de décimales indiquées par
              initid->decimals. Pour les fonctions
              numériques, la taille inclut le signe et le séparateur
              décimal.
            
              Si vous voulez retourner un BLOB, vous
              devez donner à ce membre la valeur de 65 ko ou 16 Mo; cet
              espace mémoire ne sera pas alloué, mais utilisé pour
              décider quel type de colonne utiliser, si il y a un
              besoin de stockage temporaire.
            
              char *ptr
            
              Un pointeur que la fonction peut utiliser pour ses besoins
              propres. Par exemple, la fonction peut utiliser
              initid->ptr pour transférer de la
              mémoire allouée entre les trois fonctions. En
              xxx_init(), allouez de la mémoire, et
              assignez la à ce pointeur :
            
initid->ptr = allocated_memory;
              En xxx() et
              xxx_deinit(), utilisez
              initid->ptr pour exploiter ou
              supprimer la mémoire.
            
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

