Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Определяет функцию в области команды 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)