FUNCTION (Entidade SQL)
Define uma função no escopo de um comando de consulta Entity SQL.
Sintaxe
FUNCTION function-name
( [ { parameter_name <type_definition>
[ ,...n ]
]
) AS ( function_expression )
<type_definition>::=
{ data_type | COLLECTION ( <type_definition> )
| REF ( data_type )
| ROW ( row_expression )
}
Argumentos
function-name
Nome da função.
parameter-name
Nome de um parâmetro na função.
function_expression
Uma expressão Entity SQL válida que é a função. O comando na função pode agir sobre parameter_name
os parâmetros passados para a função.
data_type
Nome de um tipo suportado.
COLEÇÃO ( <type_definition>
)
Uma expressão que retorna uma coleção de tipos, linhas ou referências suportados.
REFª (data_type
)
Uma expressão que retorna uma referência a um tipo de entidade.
LINHA (row_expression
)
Uma expressão que retorna registros anônimos e estruturalmente digitados de um ou mais valores. Para obter mais informações, consulte ROW.
Observações
Várias funções com o mesmo nome podem ser declaradas embutidas, desde que as assinaturas de função sejam diferentes. Para obter mais informações, consulte Resolução de sobrecarga de função.
Uma função embutida pode ser chamada em um comando Entity SQL somente depois de ter sido definida nesse comando. No entanto, uma função embutida pode ser chamada dentro de outra função embutida antes ou depois da função chamada ter sido definida. No exemplo a seguir, a função A chama a função B antes que a função B seja definida:
Function A() as ('A calls B. ' + B())
Function B() as ('B was called.')
A()
Para obter mais informações, consulte Como chamar uma função definida pelo usuário.
As funções também podem ser declaradas no próprio modelo. As funções declaradas no modelo são executadas da mesma forma que as funções declaradas embutidas no comando. Para obter mais informações, consulte Funções definidas pelo usuário.
Exemplo 1
O comando Entity SQL a seguir define uma função Products
que usa um valor inteiro para filtrar os produtos retornados.
USING Microsoft.Samples.Entity;
FUNCTION Products(listPrice Int32) AS
(
SELECT VALUE p FROM AdventureWorksEntities.Products AS p
WHERE p.ListPrice >= listPrice
)
select p FROM Products(@price) AS p
Exemplo 2
O comando Entity SQL a seguir define uma função StringReturnsCollection
que usa uma coleção de cadeias de caracteres para filtrar os contatos retornados.
USING Microsoft.Samples.Entity;
FUNCTION GetSpecificContacts(Ids Collection(Int32)) AS
(
SELECT VALUE id FROM Ids AS id WHERE id < @price
)
GetSpecificContacts(SELECT VALUE c.ContactID
FROM AdventureWorksEntities.Contacts AS c)