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)를 참조하십시오.

설명

함수 시그니처가 다르면 이름이 같은 여러 함수를 인라인으로 선언할 수 있습니다. 자세한 내용은 함수 오버로드 확인(Entity SQL)을 참조하십시오.

인라인 함수는 Entity SQL 명령에서 정의된 이후에야 해당 명령에서 호출될 수 있습니다. 그러나 인라인 함수는 호출된 함수가 정의되기 이전 또는 이후에 다른 인라인 함수 내에서 호출될 수 있습니다. 다음 예제에서는 함수 B가 정의되기 전에 함수 A에서 함수 B를 호출합니다.

Function A() as ('A calls B. ' + B())

Function B() as ('B was called.')

A()

자세한 내용은 방법: 사용자 정의 함수 호출(Entity Framework)을 참조하십시오.

함수는 모델 자체에서도 선언할 수 있습니다. 모델에서 선언된 함수는 명령에서 인라인으로 선언된 함수와 동일한 방식으로 실행됩니다. 자세한 내용은 사용자 정의 함수(Entity SQL)를 참조하십시오.

예제

다음 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

다음 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)

참고 항목

개념

Entity SQL 참조
Entity SQL 언어