Les fonctions externes, également appelées fonctions définies par l'utilisateur, sont des programmes écrits dans n'importe quel langage de programmation et stockés dans des bibliothèques dynamiques. Une fois qu'une fonction est déclarée dans la base de données, elle devient dans les déclarations dynamiques et procédurales comme si elles étaient implémentées dans le langage SQL.

Les fonctions externes étendent considérablement les capacités de traitement des données de SQL. Pour que les fonctions soient disponibles dans la base de données, elles doivent être déclarées à l'aide de l'opérateur DECLARE EXTERNAL FUNCTION.

Une fois qu'une fonction est déclarée, la bibliothèque qui la contient sera chargée lors du premier accès à l'une des fonctions incluses dans la bibliothèque.

Important

Les fonctions externes (UDFs) sont déclarées dépréciées dans Firebird 4 :

  • Par défaut, le paramètre de configuration UdfAccess est défini à None. Afin d'exécuter les UDFs, la configuration explicite UdfAccess = Restrict path-list est maintenant requise.

  • Les bibliothèques UDF (ib_udf, fbudf) ne sont plus incluses dans les kits d'installation.

  • La plupart des fonctions des bibliothèques précédemment distribuées dans les bibliothèques partagées (dynamiques) ib_udf et fbudf ont déjà été remplacées par des fonctions intégrées. Les quelques UDF restants ont été soit remplacés par des fonctions similaires dans la nouvelle bibliothèque UDR appelée udf_compat, soit convertis en fonctions stockées.

    Reportez-vous à la section "Déclassement des fonctions externes (UDF)" dans le chapitre "Interopérabilité" des notes de version de Firebird 4.0. pour des informations détaillées et des instructions sur la mise à niveau pour utiliser les fonctions sécurisées.

  • Il est fortement recommandé de remplacer les UDF par des UDR ou des fonctions stockées. Voir CREATE FUNCTION.

Caution

Les UDF sont fondamentalement peu sûrs. Nous recommandons d'éviter leur utilisation si possible et de désactiver les UDF dans la configuration de votre base de données (UdfAccess = None dans firebird.conf, valeur par défaut depuis Firebird 4.0). Si vous avez vraiment besoin d'appeler votre propre code depuis votre base de données, utilisez plutôt le mécanisme UDR.