- 30/03/2017
- 2 minutes de lecture
-
- s
- n
- . T
- v
- n
-
+6
Une fonction à valeur de tableauvalued function renvoie un seul rowset (contrairement aux procédures stockées, qui peuvent renvoyer plusieurs formes de résultats). Comme le type de retour d’une fonction à valeur de table est Table
, vous pouvez utiliser une fonction à valeur de table partout dans SQL où vous pouvez utiliser une table. Vous pouvez également traiter la fonction à valeur de table comme vous le feriez pour une table.
Exemple
La fonction SQL suivante indique explicitement qu’elle renvoie un TABLE
. Par conséquent, la structure du rowset retourné est implicitement définie.
CREATE FUNCTION ProductsCostingMoreThan(@cost money) RETURNS TABLE AS RETURN SELECT ProductID, UnitPrice FROM Products WHERE UnitPrice > @cost
LINQ to SQL mappe la fonction comme suit :
public IQueryable<ProductsCostingMoreThanResult> ProductsCostingMoreThan( System.Nullable<decimal> cost){ return this.CreateMethodCallQuery<ProductsCostingMoreThanResult>(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), cost);}
<FunctionAttribute(Name:="dbo.ProductsCostingMoreThan", IsComposable:=True)> _Public Function ProductsCostingMoreThan(<Parameter(DbType:="Money")> ByVal cost As System.Nullable(Of Decimal)) As IQueryable(Of ProductsCostingMoreThanResult) Return Me.CreateMethodCallQuery(Of ProductsCostingMoreThanResult)(Me, CType(MethodInfo.GetCurrentMethod, MethodInfo), cost) End Function
Exemple
Le code SQL suivant montre que vous pouvez effectuer une jointure à la table que la fonction renvoie et, par ailleurs, la traiter comme toute autre table :
SELECT p2.ProductName, p1.UnitPrice FROM dbo.ProductsCostingMoreThan(80.50) AS p1 INNER JOIN Products AS p2 ON p1.ProductID = p2.ProductID
En LINQ to SQL, la requête serait rendue comme suit :
var q =from p in db.ProductsCostingMoreThan(80.50m)join s in db.Products on p.ProductID equals s.ProductIDselect new { p.ProductID, s.UnitPrice };
Dim q = _From p In db.ProductsCostingMoreThan(80.5), p1 In db.Products _Where p.ProductID = p1.ProductID _Select p.ProductID, p1.UnitPrice
See also
- Fonctions définies par l’utilisateur
.