> Tech > Premiers pas avec les UDTF

Premiers pas avec les UDTF

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

Pour démarrer avec des UDTF, il faut connaître quelques points supplémentaires.
Vous pouvez mettre des UDTF sans paramètres à  la disposition des utilisateurs de Query/400 en les plaçant à  l'intérieur d'une vue. Par exemple :

Create View EmpInfo As
Select EmpMast.*
From Table(RetrieveEmployeeInfo()) As
EmpMast
Vous pouvez aussi faire

Premiers pas avec les UDTF

cela pour
des UDTF avec paramètres, si vous
pouvez spécifier ces derniers comme
constantes ou les résoudre à  partir des
colonnes d’autres tables. Pourquoi se
compliquer la vie avec une UDTF
quand on peut créer une View tout
simplement? La réponse dépend pour
beaucoup de la question : Faut-il exécuter
la logique SPL avant d’exécuter
votre instruction Select parce que des
Views ne peuvent rien faire d’autre que
d’exécuter une instruction Select.
Pour de bonnes performances,
vous devriez généralement utiliser une
UDTF comme une table primaire ou
dans une sous-requête non corrélée. Toutefois, vous pouvez aussi utiliser
des UDTF comme des tables secondaires
dans Joins et dans des sous-requêtes
corrélées.
Comme avec des UDF scalaires, le
système identifie les UDTF par des « signatures
», qui sont la combinaison du
nom des UDTF et de son paramétrage.
On peut donc définir de multiples
UDTF avec le même nom, pourvu que
les listes de paramètres soient différentes.
Ainsi, si vous avez besoin d’une
UDTF qui puisse accepter un paramètre
date ou un paramètre numérique
(représentation de date), vous
pourriez définir deux UDTF de même
nom mais avec un paramétrage différent.
Quand l’UDTF est utilisée dans
une instruction, SQL choisit la version
de l’UDTF à  utiliser d’après le type de
paramètre transmis (date ou numérique).
On trouve ce concept de signature
multiple dans beaucoup de fonctions
intégrées de SQL. Par exemple, la
fonction Char peut accepter un paramètre
date ou numérique. SQL décide
d’invoquer telle ou telle version de
Char « en coulisses », selon qu’il transmet
un paramètre date ou numérique.
Lors de la définition d’UDTF qui
peuvent accepter des constantes
comme paramètres, il est intéressant
d’utiliser les types de données Varchar,
Integer et Decimal. En effet, SQL interprète
des constantes comme « ITEM »,
3 et 2.03 comme Varchar, Integer et
Decimal, respectivement. Par exemple,
si vous avez l’intention de transmettre
un paramètre comme une valeur
constante de « OPEN » ou « HIST », définissez
ce paramètre comme Varchar(
4) plutôt que Char(4).
Quand vous utilisez la convention
de nommage *SQL, vous pouvez préfixer
une UDTF avec son nom de
schéma (bibliothèque) :

Select EmpInfo.*
From Table(Objlib.RetrieveEmployeeInfo())
As EmpInfo

De plus, vous pouvez utiliser l’instruction
Set Path pour identifier une
liste de schémas à  explorer lorsque
vous invoquez des procédures stockées
non qualifiées, des UDF scalaires,
ou des UDTF (de la même manière
qu’on utilise la liste de bibliothèques
lorsqu’on recherche des tables non
qualifiées).
Tout comme les procédures stockées,
les UDTF doivent être « blindées
». Par conséquent, vous devez les
tester rigoureusement pour éviter des
conséquences imprévues.

Téléchargez cette ressource

Solutions Cloud & Services Managés Simplifiés

Solutions Cloud & Services Managés Simplifiés

Comment capitaliser sur son existant tout en bénéficiant, dès à présent, des promesses de flexibilité et de scalabilité du cloud ? Découvrez les bonnes pratiques pour répondre aux défis de simplification du Cloud dans ce nouveau TOP 5.

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