- 03/30/2017
- 2 minuti per leggere
-
- s
- n
- T
- v
- n
-
+6
Una funzione valutata come tabellarestituisce un singolo rowset (a differenza delle stored procedure, che possono restituire più forme di risultato). Poiché il tipo di ritorno di una funzione con valore di tabella è Table
, si può usare una funzione con valore di tabella ovunque in SQL si possa usare una tabella. Potete anche trattare la funzione table-valued proprio come fareste con una tabella.
Esempio
La seguente funzione SQL dichiara esplicitamente che restituisce un TABLE
. Pertanto, la struttura del rowset restituito è implicitamente definita.
CREATE FUNCTION ProductsCostingMoreThan(@cost money) RETURNS TABLE AS RETURN SELECT ProductID, UnitPrice FROM Products WHERE UnitPrice > @cost
LINQ to SQL mappa la funzione come segue:
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
Esempio
Il seguente codice SQL mostra che è possibile unirsi alla tabella restituita dalla funzione e trattarla come qualsiasi altra tabella:
SELECT p2.ProductName, p1.UnitPrice FROM dbo.ProductsCostingMoreThan(80.50) AS p1 INNER JOIN Products AS p2 ON p1.ProductID = p2.ProductID
In LINQ to SQL, la query sarebbe resa come segue:
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
Vedi anche
- Funzioni definite dall’utente