Une fonction définie par l’utilisateur (UDF) peut retourner une valeur scalaire ou une valeur de type table. Une valeur scalaire renvoyée correspond généralement au paramètre de sortie d’une procédure stockée. Mais une fonction UDF nécessite la déclaration de ce type de données dans sa clause RETURN. La fonction se sert
Trois fonctions UDF.
de cette clause pour retourner une valeur à l’application appelante. Vous pouvez, en option, passer un ou plusieurs paramètres à une fonction UDF.
Comme ce type de fonction ne peut retourner qu’une seule valeur, il en faut trois pour accomplir la même opération qu’avec la procédure stockée upDiscontinuedProducts. Dans le contexte de notre application, la procédure stockée est plus robuste, mais son code est plus complexe que celui de chacune des trois fonctions UDF individuelles. Par ailleurs, vous pouvez référencer la valeur de retour d’une fonction UDF renvoyant une table dans une clause FROM. En revanche, le langage T-SQL ne gère pas le référencement de l’ensemble de résultats d’une procédure stockée dans une clause FROM.
Le listing 2 présente la première fonction UDF, intitulée ufProductsInCategory, laquelle renvoie le nombre total de lignes de la table Products correspondant à la valeur de paramètre @CategoryID passée par une application appelante à la fonction UDF. Le code du listing commence par supprimer toute version antérieure de l’UDF. Comme les procédures stockées et fonctions UDF peuvent appliquer un code identique pour supprimer un objet existant antérieurement, il est judicieux de les différencier en leur attribuant des noms distincts.
Le code pour la deuxième fonction UDF, ufDiscontinuedProductsInCategory, est pratiquement identique au code du listing 2, mais cette fonction renvoie un décompte se limitant aux produits arrêtés dans une catégorie. Pour créer la fonction UDF ufDiscontinuedProductsInCategory, changez simplement les références de nom dans les instructions DROP et CREATE, et remplacez l’instruction SELECT du listing 2 par le code suivant :
SELECT COUNT(*) FROM Northwind.dbo.Products AS np WHERE np.CategoryID = @CategoryID AND Discontinued = 1
Le listing 3 présente la troisième fonction UDF, ufDiscontinuedProductRowsInCategory, dont la valeur est du type table. Elle renvoie un ensemble de lignes référençables via la clause FROM d’une instruction SELECT. Notez que la clause RETURN de la fonction UDF spécifie un type de données table. Cette clause inclut une instruction SELECT, qui remplit la variable table et qui est identique à l’instruction SELECT de la procédure stockée upDiscontinuedProducts.
Téléchargez cette ressource
Construire une infrastructure cloud optimisée pour l’IA avec Microsoft Azure
Les managers IT ont besoin d’une stratégie claire et de solutions concrètes pour préparer leur infrastructure cloud à l'adoption de l'IA, tout en optimisant les coûts, renforçant la sécurité et développant les compétences internes. Découvrez tous les conseils dans ce guide Insight.
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Souveraineté numérique : les décideurs publics veulent prioriser les modèles d’IA souverains
- Dans l’œil du cyber-cyclone : l’excès d’optimisme constitue le risque principal pour la résilience des données
- Les 3 prédictions 2026 pour Java
- Infrastructures IT : 5 leviers concrets pour éviter les impasses technologiques
Articles les + lus
CES 2026 : l’IA physique et la robotique redéfinissent le futur
Les 3 prédictions 2026 pour Java
Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
Face à l’urgence écologique, l’IT doit faire sa révolution
D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
À la une de la chaîne Tech
- CES 2026 : l’IA physique et la robotique redéfinissent le futur
- Les 3 prédictions 2026 pour Java
- Semi-conducteurs : comment l’Irlande veut contribuer à atténuer la pénurie mondiale de puces
- Face à l’urgence écologique, l’IT doit faire sa révolution
- D’ici 2030, jusqu’à 90 % du code pourrait être écrit par l’IA, pour les jeunes développeurs, l’aventure ne fait que commencer
