FUNCTION (Entity SQL)
Definisce una funzione nell'ambito di un comando di query Entity SQL.
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 parametri parameter_name passati alla funzione.
- data_type
Nome di un tipo supportato.
- COLLECTION ( <type_definition*>* )
Espressione che restituisce una raccolta di tipi supportati, righe o riferimenti.
- REF ( data_type )
Espressione che restituisce un riferimento a un tipo di entità.
- ROW ( row_expression )
Espressione che restituisce record anonimi strutturalmente tipizzati da uno o più valori. Per ulteriori informazioni, vedere ROW (Entity SQL).
Osservazioni
Più funzioni con lo stesso nome possono essere dichiarate inline, purché le firme delle funzioni siano differenti. Per ulteriori informazioni, vedere Risoluzione degli overload di funzione (Entity SQL).
È possibile chiamare una funzione inline in un comando Entity SQL solo dopo che è stata definita in quel comando. Tuttavia, una funzione inline può essere chiamata in un'altra funzione inline prima o dopo che la funzione chiamata è stata definita. Nell'esempio seguente la funzione A chiama la funzione B prima che la funzione B sia definita:
Function A() as ('A calls B. ' + B())
Function B() as ('B was called.')
A()
Per ulteriori informazioni, vedere Procedura: chiamare una funzione definita dall'utente (Entity Framework).
Le funzioni possono essere dichiarate anche nel modello stesso. Le funzioni dichiarate nel modello vengono eseguite nello stesso modo delle funzioni dichiarate inline nel comando. Per ulteriori informazioni, vedere Funzioni definite dall'utente (Entity SQL).
Esempio
Nel comando Entity SQL seguente viene definita una funzione Products che utilizza un valore Integer 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
Nel comando Entity SQL seguente viene definita una funzione StringReturnsCollection che utilizza 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)