En plus des valeurs scalaires, les nouvelles UDF de SQL Server sont également
capables de renvoyer des valeurs bien plus intéressantes : des tables. Il est
possible de faire un JOIN sur une telle table, voire même de lui appliquer des
clauses WHERE.
L'utilisation d'une table comme valeur de
UDF renvoyant une table
retour est simple. Pour une UDF, une
table est semblable à tout autre type de données SQL Server, à l’exception du
fait que l’on doit d’une part, nommer la table, et d’autre part, définir les colonnes
(comme on le ferait pour une table temporaire). Pour illustrer ce point, construisons
une fonction simple qui renvoie une table contenant la liste des noms (nom de
famille et prénom) et des adresses de tous les auteurs de la base de données exemple
Pubs. Le listing 5 présente un exemple de solution ainsi qu’un exemple de requête
pour illustrer le type de contenu de table que renvoie la fonction. La table 1
présente une partie de ces résultats (j’ai supprimé le milieu dans un souci de
concision).
Tout ce qui a été fait jusqu’ici aurait pu être fait plus simplement avec une
vue. Mais supposons que l’on souhaite paramétrer une vue, et afficher uniquement
les auteurs ayant vendu un nombre minimum de livres. Avec une vue, on pourrait
joindre la requête à une autre table ou deux, mais cela deviendrait un peu verbeux,
complexe et difficilement lisible. Par ailleurs, il faudrait inclure dans la requête,
une colonne (la quantité vendue) qu’on ne veut pas nécessairement voir apparaître
dans le rapport résultant, puis utiliser une clause WHERE. Une vue et la requête
qui l’utilise pourraient ressembler au code présenté dans le listing 6. En simplifiant
les choses, on peut dire qu’on peut encapsuler ce que l’on veut dans une fonction,
comme le montre le listing 7.
A présent, la requête renvoyant la valeur désirée est simple :
SELECT *
FROM DBO.TABLEFUNCTION(25)
On peut réutiliser cette fonction sans avoir à la copier-coller. Remarquez également
que bien qu’une procédure cataloguée soit à même de produire des résultats similaires,
on ne pourrait pas joindre les résultats de cette dernière à une autre table.
Pour illustrer les avantages d’une UDF par rapport à une procédure cataloguée,
poussons notre exemple un peu plus loin. Supposons qu’un manager veuille un rapport
mentionnant l’auteur et l’éditeur de chaque livre qui s’est vendu à plus de 25
exemplaires. Si on utilise une procédure cataloguée, on ne peut pas joindre de
valeurs aux résultats sans passer par un processus laborieux, en plusieurs étapes.
Avec notre fonction, la jointure d’autres tables aux résultats est simple. Comme
on peut le voir dans le listing 8, la jointure des données à la fonction est aussi
simple que si la fonction était une table ou une vue. La seule véritable différence
est que je peux à présent utiliser un ou plusieurs paramètres au lieu d’une clause
WHERE.
Téléchargez cette ressource
Microsoft 365 Tenant Resilience
Face aux failles de résilience des tenants M365 (configurations, privilèges, sauvegarde). Découvrez 5 piliers pour durcir, segmenter et surveiller vos environnements afin de limiter l’impact des attaques. Prioriser vos chantiers cyber et améliorer la résilience de vos tenants Microsoft 365.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Data streaming : le nouveau socle stratégique de l’IA en entreprise
- Ransomware en santé : la double extorsion fait exploser la facture en Europe
- Les fuites de données explosent en France, désormais pays le plus touché d’Europe
- L’IA accélère les attaques et expose les identités non gouvernées
Articles les + lus
Model Context Protocol : le contexte, grand oublié du débat
Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
Couchbase lance AI Data Plane pour industrialiser l’IA agentique
Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
Computex 2026 : 5 signaux forts à retenir
À la une de la chaîne Tech
- Model Context Protocol : le contexte, grand oublié du débat
- Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
- Couchbase lance AI Data Plane pour industrialiser l’IA agentique
- Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
- Computex 2026 : 5 signaux forts à retenir
