다음을 통해 공유


FUNCTION(Entity 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)

참고하십시오