Vous trouverez ci-après une présentation rapide des fonctions utilisées dans les exemples du présent document. Une fonction de base de données est une relation entre un ensemble de valeurs fournies en entrée et une valeur résultat.
Les fonctions peuvent être intégrées ou définies par l'utilisateur. Vous trouverez dans DB2 Universal Database de nombreuses fonctions intégrées et définies par l'utilisateur et déjà installées.
Les fonctions intégrées se trouvent dans le schéma SYSIBM et les fonctions définies par l'utilisateur et déjà installées figurent dans le schéma SYSFUN. SYSIBM et SYSFUN sont des schémas réservés.
Les fonctions intégrées et définies par l'utilisateur et déjà installées ne suffisent pas à remplir tous les besoins de l'utilisateur. C'est pourquoi les développeurs ont quelquefois besoin d'ajouter leur propre ensemble de fonctions, spécifique de leurs applications. Il est possible de le faire à partir des fonctions définies par l'utilisateur, qui élargissent la portée de DB2 Universal Database par l'inclusion, par exemple, de fonctions scientifiques ou commerciales personnalisées. Vous trouverez plus de détails sur ce sujet à la section Fonctions définies par l'utilisateur (UDF).
Les fonctions de colonne donnent un résultat unique à partir d'un ensemble de valeurs présentes dans une colonne. Vous trouverez ci-dessous quelques exemples de fonctions de colonne. Le document SQL Reference contient la liste complète de ces fonctions de colonne.
L'instruction suivante sélectionne le salaire maximum de la table STAFF :
SELECT MAX(SALARY) FROM STAFF
Cette instruction renvoie de la table STAFF la valeur 22959,20.
L'exemple suivant sélectionne les noms et les salaires des employés qui ont un revenu plus élevé que la moyenne des revenus constatés dans la société et un temps de présence inférieur au temps de présence moyen.
SELECT NAME, SALARY FROM STAFF WHERE SALARY > (SELECT AVG(SALARY) FROM STAFF) AND YEARS < (SELECT AVG(YEARS) FROM STAFF)
Cette instruction donne le résultat suivant :
NAME SALARY --------- --------- Marenghi 17506.75 Daniels 19260.25 Gonzales 16858.20
Dans la clause WHERE de l'exemple ci-dessus, la fonction de colonne est déclarée dans une sous-requête au lieu d'être implémentée directement (par exemple, WHERE SALARY > AVG(SALARY)). Les fonctions de colonne ne peuvent pas être déclarées dans la clause WHERE. Ceci est dû à l'ordre des opérations. On peut considérer que la clause WHERE est évaluée avant la clause SELECT. Par conséquent, lors de l'évaluation de la clause WHERE, la fonction de colonne n'a pas accès à l'ensemble de valeurs. Cet ensemble est sélectionné ultérieurement, avec la clause SELECT.
L'élément DISTINCT, utilisé dans l'argument d'une fonction de colonne, peut servir à éliminer les valeurs en double avant d'appliquer la fonction. Ainsi, COUNT(DISTINCT WORKDEPT) calcule le nombre de services différents.
Une fonction scalaire effectue une opération sur une valeur, pour renvoyer une autre valeur. Voici quelques exemples de fonctions scalaires fournies par DB2 Universal Database.
Le document SQL Reference contient une liste détaillée des fonctions scalaires, accompagnée de leur description.
L'instruction suivante renvoie les noms des services de la table ORG ainsi que la longueur de chacun des noms :
SELECT DEPTNAME, LENGTH(DEPTNAME) FROM ORG
Cette instruction donne le résultat suivant :
DEPTNAME 2 -------------- ----------- Head Office 11 New England 11 Mid Atlantic 12 South Atlantic 14 Great Lakes 11 Plains 6 Pacific 7 Mountain 8
Remarque : Comme la clause AS n'a pas été utilisée pour donner un nom significatif à LENGTH(DEPTNAME), un numéro généré par le système apparaît en titre de la deuxième colonne.
Les fonctions de table renvoient les colonnes d'une table qui ressemblent à la table créée par une instruction CREATE TABLE.
Une fonction de table peut être utilisée uniquement dans la clause FROM d'une instruction SQL.
La seule fonction de table prise en charge dans DB2 Universal Database est SQLCACHE_SNAPSHOT.