- 03/30/2017
- 2 minutos para ler
- ul>>
- s
- n
- T
- v
- n
-
+6
/li>
Uma tabela-A função valorizada devolve um único conjunto de linhas (ao contrário dos procedimentos armazenados, que pode devolver múltiplas formas de resultados). Porque o tipo de retorno de uma função com valor de tabela é Table
, é possível usar uma função com valor de tabela em qualquer lugar em SQL que possa usar uma tabela. Também pode tratar a função valorizada em tabela tal como trataria uma tabela.
Exemplo
A seguinte função SQL declara explicitamente que retorna um TABLE
. Portanto, a estrutura do conjunto de linhas devolvido é implicitamente definida.
CREATE FUNCTION ProductsCostingMoreThan(@cost money) RETURNS TABLE AS RETURN SELECT ProductID, UnitPrice FROM Products WHERE UnitPrice > @cost
LINQ para SQL mapeia a função da seguinte forma:
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
Exemplo
O seguinte código SQL mostra que se pode juntar à tabela que a função retorna e tratá-la de outra forma como se trataria qualquer outra tabela:
SELECT p2.ProductName, p1.UnitPrice FROM dbo.ProductsCostingMoreThan(80.50) AS p1 INNER JOIN Products AS p2 ON p1.ProductID = p2.ProductID
Em LINQ para SQL, a consulta seria feita da seguinte forma:
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
Veja também
- li> Funções Definidas pelo Utilizador