Condividi tramite


FUNCTION (Entity SQL)

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 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 altre informazioni, vedere ROW.

Osservazioni:

Più funzioni con lo stesso nome possono essere dichiarate inline, purché le firme delle funzioni siano differenti. Per altre informazioni, vedere Function Overload Resolution.

È 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 altre informazioni, vedere Procedura: chiamare una funzione definita dall'utente.

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 altre informazioni, vedere Funzioni definite dall'utente.

Esempio 1

Nel comando Entity SQL seguente viene definita una funzione Products che usa 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

Esempio 2

Nel comando Entity SQL seguente viene definita una funzione StringReturnsCollection che usa 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)

Vedi anche