> Tech > Création d’une UDF SQL

Création d’une UDF SQL

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

L'instruction Create Function de la figure 1a présente une UDF SQL simple qui renvoie le nom du jour de la semaine pour une date donnée. Si on transmet la date 2 janvier 2000 à  la fonction, elle renvoie la valeur Sunday (Dimanche). L'instruction de la figure 1b utilise la fonction

Création d’une UDF SQL

Day_Name dans les clauses Select et Group
By pour résumer les saisies de commandes pour chaque jour de la semaine. Il ne
faut pas oublier que l’on peut utiliser une UDF scalaire partout où on utiliserait
une fonction intégrée (dans la clause Set d’une instruction Update, dans une clause
Where, par exemple).

Examinons la syntaxe de l’instruction Create Function. Elle définit une collection
(bibliothèque), un nom de fonction, puis une liste de paramètres en entrée placée
entre parenthèses. Il faut inclure un nom et un type de donnée pour chaque paramètre
de la liste. Dans le cas présent, il n’y a qu’un paramètre en entrée, parmInDate,
dont le type de données est Date. Ensuite, le mot-clé Returns indique le type
de données que la fonction renverra et le mot-clé pour le langage précise SQL.
Langages acceptés : C, C++, CL, Cobol, Cobol ILE, PL/I, RPG, RPG ILE, SQL et (en
V4R5 seulement) Java.

On rencontre également le mot-clé Deterministic. Une UDF Deterministic renvoie
toujours la même valeur quand on lui donne des valeurs de paramètre d’entrée identiques.
Ce mot-clé peut être utile dans le cas où une UDF serait appelée de nombreuses
fois avec les mêmes paramètres d’entrée. En effet si SQL sait qu’une UDF renvoie
la même valeur, il n’aura pas à  l’exécuter de façon répétitive. Avec une UDF non
déterministe (définie par les mots-clés Not Deterministic), il est impossible
de connaître le résultat, même si des paramètres identiques sont transmis. On
utilisera les mots-clés Not Deterministic pour créer la plupart des fonctions
accédant aux tables pour recueillir des informations.

L’option Returns Null on Null Input demande à  SQL/400 de ne pas exécuter l’UDF
si l’un quelconque des paramètres d’entrée est Null. Si un ou plusieurs paramètres
sont Null, le résultat de l’UDF sera lui aussi Null. Cette option améliore les
performances dans le cas d’un paramètre Null parce que l’UDF n’a alors pas à  s’exécuter.

A l’inverse, s’il faut appeler la fonction avec des paramètres Null, on indiquera
Called On Null Input.
Quand on précise Langage SQL, il est nécessaire d’avoir la base de la fonction
écrite en SPL. Figure 1a, ce code se trouve entre les mots-clés Begin et End.
Le mot-clé SPL Return renvoie le résultat de la fonction et cette valeur doit
correspondre au type de données indiqué dans le mot-clé Returns. Rappelons qu’on
a besoin du compilateur C ILE pour créer une fonction avec SPL. Pour plus d’informations
sur l’utilisation de SPL, voir l’encadré « Références SPL ».

Téléchargez cette ressource

Préparer l’entreprise aux technologies interconnectées

Préparer l’entreprise aux technologies interconnectées

Avec la « quatrième révolution industrielle », les environnements hyperconnectés entraînent de nouveaux risques en matière de sécurité. Découvrez, dans ce guide Kaspersky, comment faire face à cette nouvelle ère de vulnérabilité.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010