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)