Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Definisce una funzione nell'ambito di un comando di query Entity SQL.
Sintassi
FUNCTION function-name
( [ { parameter_name <type_definition>
[ ,...n ]
]
) AS ( function_expression )
<type_definition>::=
{ data_type | COLLECTION ( <type_definition> )
| REF ( data_type )
| ROW ( row_expression )
}
Argomenti
function-name
Nome della funzione.
parameter-name
Nome di un parametro nella funzione.
function_expression
Espressione Entity SQL valida che è la funzione . Il comando nella funzione può agire sui parameter_name parametri passati alla funzione.
data_type
Nome di un tipo supportato.
COLLECTION ( <type_definition> )
Espressione che restituisce una raccolta di tipi, righe o riferimenti supportati.
REF (data_type)
Espressione che restituisce un riferimento a un tipo di entità.
ROW (row_expression)
Espressione che restituisce record anonimi tipizzati strutturalmente da uno o più valori. Per altre informazioni, vedere ROW.
Osservazioni:
È possibile dichiarare inline più funzioni con lo stesso nome, purché le firme della funzione siano diverse. Per altre informazioni, vedere Risoluzione dell'overload delle funzioni.
Una funzione inline può essere chiamata in un comando Entity SQL solo dopo che è stata definita in tale comando. Tuttavia, una funzione inline può essere chiamata all'interno di un'altra funzione inline prima o dopo la definizione della funzione chiamata. Nell'esempio seguente la funzione A chiama la funzione B prima che venga definita la funzione B:
Function A() as ('A calls B. ' + B())
Function B() as ('B was called.')
A()
Per altre informazioni, vedere Procedura: Chiamare una funzione User-Defined.
Le funzioni possono anche essere dichiarate nel modello stesso. Le funzioni dichiarate nel modello vengono eseguite nello stesso modo in cui le funzioni dichiarate inline nel comando. Per altre informazioni, vedere Funzioni diUser-Defined.
Esempio 1
Il comando Entity SQL seguente definisce una funzione Products che accetta un valore intero per filtrare i prodotti restituiti.
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
Esempio 2
Il comando Entity SQL seguente definisce una funzione StringReturnsCollection che accetta una raccolta di stringhe per filtrare i contatti restituiti.
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)