Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 (w programowaniu)
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 Instrukcje: wywoływanie funkcji User-Defined.
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 User-Defined Functions.
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)