다음을 통해 공유


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

적용 대상: SQL Server

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

SqlUserDefinedAggregate

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

집계 메서드

사용자 정의 집계로 등록된 클래스는 다음과 같은 인스턴스 메서드를 지원해야 합니다. 쿼리 프로세서가 집계를 계산하는 데 사용하는 메서드는 다음과 같습니다.

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

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

참고 항목

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