- 03/30/2017
- 2 minutos para leer
-
- s
- n
- T
- v
- n
-
+6
Una tabla-función valorada en tabla devuelve un único conjunto de filas (a diferencia de los procedimientos almacenados, que pueden devolver múltiples formas de resultado). Dado que el tipo de retorno de una función con valor de tabla es Table
, puede utilizar una función con valor de tabla en cualquier lugar de SQL en el que pueda utilizar una tabla. También puede tratar la función table-valued como lo haría con una tabla.
Ejemplo
La siguiente función SQL declara explícitamente que devuelve un TABLE
. Por lo tanto, la estructura del rowset devuelto está definida implícitamente.
CREATE FUNCTION ProductsCostingMoreThan(@cost money) RETURNS TABLE AS RETURN SELECT ProductID, UnitPrice FROM Products WHERE UnitPrice > @cost
LINQ to SQL mapea la función de la siguiente manera:
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
Ejemplo
El siguiente código SQL muestra que se puede unir a la tabla que devuelve la función y, por lo demás, tratarla como cualquier otra tabla:
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 consulta se renderizaría de la siguiente manera:
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
Ver también
- Funciones definidas por el usuario
.