Fonctions SQL |
On appelle fonction un type spécial de commande dans le jeu de commandes SQL99. En fait, une fonction est une commande en un seul mot qui renvoie une valeur unique. La valeur d´une fonction peut être déterminée par des paramètres d´entrée (tel est par exemple le cas lorsque la fonction renvoie la moyenne d´une liste de valeurs de base de données). Cependant, les fonctions n´utilisent que rarement les paramètres d´entrée (à l´instar de la fonction CURRENT_TIME, qui renvoie l´heure système). La norme SQL99 prend en charge diverses fonctions fort utiles. Le présent chapitre explique ces fonctions, sur la base de descriptions et d´exemples détaillés. De plus, les éditeurs de base de données proposent tous une longue liste de leurs fonctions internes spécifiques qui dépassent le cadre de la norme SQL. Des listes et des descriptions illustrent les fonctions internes des diverses implémentations de base de données. De plus, les éditeurs de base de données permettent normalement de créer des fonctions utilisateur. Pour plus de détails sur les fonctions utilisateur, reportez-vous à la commande CREATE FUNCTION du chapitre 3.
Fonctions déterministiques et non déterministiques
Une fonction peut être déterministique ou non déterministique. Une Une fonction déterministique renvoie toujours les mêmes résultats à partir de valeurs d´entrées identiques. Une fonction non déterministique renvoie des résultats différents à chaque appel, même si les valeurs d´entrées sont identiques. Pourquoi ce point revêt-il une grande importance ? En raison de l’utilisation possible des fonctions dans les vues, les fonctions utilisateur et les procédures stockées. Les restrictions varient en fonction de l’implémentation utilisée, mais ces objets n’autorisent parfois que les fonctions déterministiques dans leur code de définition. Par exemple, Microsoft SQL Server permet de créer un index sur une expression de colonne — tant que cette expression ne contient aucune fonction non déterministique. Les règles et les restrictions varient d’un éditeur à l’autre; pensez donc à consulter la documentation appropriée lorsque vous utilisez les fonctions.