Sdílet prostřednictvím


FUNCTION (Entity SQL)

Definuje funkci v oboru příkazu dotazu Entity SQL.

Syntaxe

FUNCTION function-name  
( [ { parameter_name <type_definition>
        [ ,...n ]  
  ]  
) AS ( function_expression )
  
<type_definition>::=  
    { data_type | COLLECTION ( <type_definition> )
                | REF ( data_type )
                | ROW ( row_expression )
        }

Argumenty

function-name
Název funkce.

parameter-name
Název parametru ve funkci.

function_expression
Platný výraz ENTITY SQL, který je funkcí. Příkaz ve funkci může pracovat s parameter_name parametry předanými funkci.

data_type
Název podporovaného typu

COLLECTION ( <type_definition> )
Výraz, který vrací kolekci podporovaných typů, řádků nebo odkazů.

ODKAZ (data_type)
Výraz, který vrací odkaz na typ entity.

ŘÁDEK (row_expression)
Výraz, který vrací anonymní záznamy se strukturálně zadanými záznamy z jedné nebo více hodnot. Další informace najdete v tématu ŘÁDEK.

Poznámky

Více funkcí se stejným názvem lze deklarovat jako vložené, pokud se podpisy funkce liší. Další informace naleznete v tématu Řešení přetížení funkce.

Vloženou funkci lze volat v příkazu Entity SQL až po jeho definování v daném příkazu. Vloženou funkci však lze volat uvnitř jiné vložené funkce buď před nebo po jeho definování. V následujícím příkladu funkce A volá funkci B před definováním funkce B:

Function A() as ('A calls B. ' + B())

Function B() as ('B was called.')

A()

Další informace naleznete v tématu Postupy: Volání uživatelem definované funkce.

Funkce lze deklarovat také v samotném modelu. Funkce deklarované v modelu se spouští stejným způsobem jako funkce deklarované v příkazu. Další informace naleznete v tématu Uživatelem definované funkce.

Příklad 1

Následující příkaz Entity SQL definuje funkci Products , která přebírá celočíselnou hodnotu k filtrování vrácených produktů.

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

Příklad 2

Následující příkaz Entity SQL definuje funkci StringReturnsCollection , která přebírá kolekci řetězců k filtrování vrácených kontaktů.

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)

Viz také