Udostępnij za pośrednictwem


FUNCTION (Entity SQL)

Definiuje funkcję w zakresie polecenia zapytania Entity SQL.

Składnia

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
Nazwa funkcji.

parameter-name
Nazwa parametru w funkcji.

function_expression
Prawidłowe wyrażenie Języka SQL jednostki, które jest funkcją. Polecenie w funkcji może działać na parameter_name parametrach przekazywanych do funkcji.

data_type
Nazwa obsługiwanego typu.

COLLECTION ( <type_definition> )
Wyrażenie zwracające kolekcję obsługiwanych typów, wierszy lub odwołań.

REF (data_type)
Wyrażenie zwracające odwołanie do typu jednostki.

WIERSZ (row_expression)
Wyrażenie zwracające anonimowe, strukturalnie wpisane rekordy z co najmniej jednej wartości. Aby uzyskać więcej informacji, zobacz WIERSZ.

Uwagi

Wiele funkcji o tej samej nazwie można zadeklarować w tekście, o ile podpisy funkcji są różne. Aby uzyskać więcej informacji, zobacz Rozpoznawanie przeciążenia funkcji.

Funkcję śródliniową można wywołać w poleceniu Entity SQL dopiero po zdefiniowaniu w tym poleceniu. Jednak funkcja śródliniowa może być wywoływana wewnątrz innej funkcji wbudowanej przed lub po zdefiniowaniu wywoływanej funkcji. W poniższym przykładzie funkcja A wywołuje funkcję B przed zdefiniowaną funkcją B:

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

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

A()

Aby uzyskać więcej informacji, zobacz How to: Call a User-Defined Function (Instrukcje: wywoływanie funkcji zdefiniowanej przez użytkownika).

Funkcje można również zadeklarować w samym modelu. Funkcje zadeklarowane w modelu są wykonywane w taki sam sposób, jak funkcje zadeklarowane w tekście w poleceniu. Aby uzyskać więcej informacji, zobacz Funkcje zdefiniowane przez użytkownika.

Przykład 1

Następujące polecenie Entity SQL definiuje funkcję Products , która przyjmuje wartość całkowitą w celu filtrowania zwracanych produktów.

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

Przykład 2

Następujące polecenie Entity SQL definiuje funkcję StringReturnsCollection , która pobiera kolekcję ciągów w celu filtrowania zwróconych kontaktów.

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)

Zobacz też