Bible Microsoft SQL Server 2012 by

Le deuxième type de fonction définie par l’utilisateur, la fonction en ligne à valeur de table, est similaire à une vue. Toutes deux sont enveloppées pour une instruction SELECT stockée. Une fonction définie par l’utilisateur inline à valeur de table conserve les avantages d’une vue, et ajoute des paramètres. Comme pour une vue, si l’instruction SELECT est actualisable, la fonction l’est également.

Création d’une fonction inline à valeur de tableau

La fonction inline à valeur de tableau définie par l’utilisateur n’a pas de corps BEGIN/END. Au lieu de cela, l’instruction SELECT est renvoyée sous la forme d’une table virtuelle :

CREATE FUNCTION FunctionName (InputParameters)RETURNS TableASRETURN (Select Statement);

La fonction en ligne à valeur de table suivante est similaire à ufnGetOrderTotalByProduct, mais au lieu de renvoyer un seul total de commande pour un produit fourni, elle renvoie un ensemble comprenant le nom du produit et le total de commande pour une catégorie de produits fournie.

CREATE FUNCTION dbo.ufnGetOrderTotalByProductCategory(@ProductCategoryID int)RETURNS TABLEAS RETURN ( SELECT p.ProductID, p.Name, sum(sod.OrderQty) as TotalOrders FROM Production.Product p JOIN Sales.SalesOrderDetail sod ON p.ProductID = sod.ProductID JOIN Production.ProductSubcategory s ON p.ProductSubcategoryID = s.ProductSubcategoryID JOIN Production.ProductCategory c ON s.ProductCategoryID = c.ProductCategoryID WHERE c.ProductCategoryID = @ProductCategoryID GROUP BY p.ProductID, p.Name ); GO

Appeler une fonction en ligne à valeur de tableau

Pour récupérer des données par le biais de dbo.ufnGetOrderTotalByProductCategory, appelez la fonction …

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *