CLR 사용자 정의 집계 - 요구 사항

적용 대상:SQL Server

공용 언어 런타임(CLR) 어셈블리의 형식이 필요한 집계 계약을 구현한다면 해당 형식을 사용자 정의 집계 함수로 등록할 수 있습니다. 이 계약은 SqlUserDefinedAggregate 특성 및 집계 계약 메서드로 구성됩니다. 집계 계약에는 집계의 중간 상태를 저장하는 메커니즘과 Init, Accumulate, MergeTerminate의 네 가지 메서드로 구성된 새 값을 누적하는 메커니즘이 포함됩니다. 이러한 요구 사항을 충족하면 Microsoft SQL Server 사용자 정의 집계를 최대한 활용할 수 있습니다. 이 항목의 다음 섹션에서는 사용자 정의 집계를 만드는 방법과 사용하는 방법에 대한 자세한 정보를 제공합니다. 예제는 CLR User-Defined 집계 함수 호출을 참조하세요.

SqlUserDefinedAggregate

자세한 내용은 SqlUserDefinedAggregateAttribute를 참조하세요.

집계 메서드

사용자 정의 집계로 등록된 클래스는 다음과 같은 인스턴스 메서드를 지원해야 합니다. 쿼리 프로세서는 이러한 메서드를 사용하여 집계를 컴퓨팅합니다.

메서드 구문 Description
Init public void Init(); 쿼리 프로세서는 이 메서드를 사용하여 집계 계산을 초기화합니다. 이 메서드는 쿼리 프로세서가 집계하는 각 그룹에 대해 한 번씩 호출됩니다. 쿼리 프로세서는 여러 그룹의 집계를 계산할 때 집계 클래스의 동일한 인스턴스를 다시 사용할 수 있습니다. Init 메서드는 이 instance 이전 사용에서 필요에 따라 모든 클린 수행하고 새 집계 계산을 다시 시작할 수 있도록 해야 합니다.
누적 public void Accumulate ( input-type value[, input-type value, ...]); 함수의 매개 변수를 나타내는 1개 이상의 매개 변수. input_typeCREATE AGGREGATE 문의 input_sqltype 지정된 네이티브 SQL Server 데이터 형식과 동일한 관리되는 SQL Server 데이터 형식이어야 합니다. 자세한 내용은 CLR 매개 변수 데이터 매핑을 참조하세요.

UDT(사용자 정의 형식)의 경우 input-type이 UDT 형식과 동일합니다. 쿼리 프로세서는 이 메서드를 사용하여 집계 값을 누적시킵니다. 이 메서드는 집계되는 그룹의 각 값에 대해 한 번씩 호출됩니다. 쿼리 프로세서는 항상 집계 클래스의 지정된 instance Init 메서드를 호출한 후에만 호출합니다. 이 메서드 구현은 전달되는 인수 값의 누적을 반영하도록 인스턴스 상태를 업데이트해야 합니다.
병합 public void Merge( udagg_class value); 이 메서드를 사용하여 이 집계 클래스의 다른 인스턴스를 현재 인스턴스와 병합할 수 있습니다. 쿼리 프로세서는 이 메서드를 사용하여 집계의 다중 부분 계산을 병합합니다.
Terminate public return_type Terminate(); 이 메서드는 집계 계산을 완료하고 집계 결과를 반환합니다. return_typeCREATE AGGREGATE 문에 지정된 return_sqltype 관리되는 것과 동일한 관리되는 SQL Server 데이터 형식이어야 합니다. return_type 사용자 정의 형식일 수도 있습니다.

참고 항목

CLR 사용자 정의 형식
CLR 사용자 정의 집계 함수 호출