Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Определяет функцию в области команды sql-запроса Entity SQL.
Синтаксис
FUNCTION function-name
( [ { parameter_name <type_definition>
[ ,...n ]
]
) AS ( function_expression )
<type_definition>::=
{ data_type | COLLECTION ( <type_definition> )
| REF ( data_type )
| ROW ( row_expression )
}
Аргументы
function-name
Имя функции.
parameter-name
Имя параметра в функции.
function_expression
Допустимое выражение Entity SQL, являющееся функцией. Команда в функции может действовать над parameter_name параметрами, переданными функции.
data_type
Имя поддерживаемого типа.
COLLECTION ( <type_definition> )
Выражение, возвращающее коллекцию поддерживаемых типов, строк или ссылок.
REF (data_type)
Выражение, возвращающее ссылку на тип сущности.
ROW (row_expression)
Выражение, возвращающее анонимные, структурны типизированные записи из одного или нескольких значений. Дополнительные сведения см. в разделе ROW.
Замечания
Несколько функций с одинаковым именем могут быть объявлены встроенными, если сигнатуры функции отличаются. Дополнительные сведения см. в разделе "Разрешение перегрузки функций".
Встроенная функция может вызываться в команде Entity SQL только после определения в этой команде. Однако встроенная функция может вызываться внутри другой встроенной функции либо до, либо после определения вызываемой функции. В следующем примере функция A вызывает функцию B перед определением функции B:
Function A() as ('A calls B. ' + B())
Function B() as ('B was called.')
A()
Дополнительные сведения см. в статье "Практическое руководство. Вызов функции User-Defined".
Функции также можно объявить в самой модели. Функции, объявленные в модели, выполняются так же, как функции, объявленные встроенными в команде. Дополнительные сведения см. в разделе User-Defined Функции.
Пример 1
Следующая команда Entity SQL определяет функцию Products , которая принимает целочисленное значение для фильтрации возвращаемых продуктов.
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
Пример 2
Следующая команда Entity SQL определяет функцию StringReturnsCollection , которая принимает коллекцию строк для фильтрации возвращаемых контактов.
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)