사용자 정의 형식 작업 수행
여러 사용자 정의 형식의 인스턴스에 대해 다음과 같은 다양한 작업을 수행할 수 있습니다.
사용자 정의 형식의 메서드 호출 또는 속성 검색
데이터 형식 변환 수행
SQL 클라이언트에 사용자 정의 형식 값 반환
ORDER BY 절 사용
사용자 정의 형식 열에 인덱스 작성
계산 열 만들기
사용자 정의 형식의 메서드 호출 또는 속성 검색
스칼라 식을 사용할 수 있는 곳에서는 사용자 정의 형식의 메서드를 호출하거나 속성을 검색할 수 있습니다. 해당 유형에 대한 EXECUTE 권한이 있어야 합니다. UPDATE 문 외부에서 데이터를 변경하는 메서드가 실행되지만 쿼리에는 변경 가능한 메서드가 허용되지 않으므로 변경 내용은 무시됩니다.
현재 데이터베이스에 관계없이 사용자 정의 형식이 생성된 데이터베이스의 데이터 정렬이 사용자 정의 형식 메서드에서 반환된 문자열에 적용됩니다.
주의 |
---|
SELECT 문에 사용되는 메서드와 속성은 부작용이 없어야 합니다. SELECT 문에 사용되는 메서드가 부작용을 일으키는 경우 결과가 결정적이지 않습니다. |
주의 |
---|
계산 열이 생성되는 사용자 정의 형식에 대해 메서드 또는 속성이 호출되고 이 호출이 계산 열에 대한 작업과 관련하여 이루어진다면 이 유형에 대한 EXECUTE 권한이 확인되지 않습니다. 대신 계산 열이 생성될 때 권한이 확인됩니다. |
사용자 정의 형식의 메서드를 호출하거나 속성을 검색하려면
[!참고]
SQL Server Management Studio는 사용자 정의 형식 값을 이진 표현으로 반환합니다. 사용자 정의 형식 값을 문자열 또는 XML 형식으로 반환하려면 CAST 또는 CONVERT를 사용합니다.
사용자 정의 형식에 대해 데이터 형식 변환 수행
다음 표에 요약된 것처럼 사용자 정의 형식에 대해 암시적 변환 및 명시적 변환을 수행할 수 있습니다.
|
대상: 사용자 정의 형식 |
이진 |
nvarchar |
xml |
---|---|---|---|---|
원본: 사용자 정의 형식 |
|
명시적 |
명시적 |
암시적 |
이진 |
암시적 |
|
|
|
nvarchar |
암시적 |
|
|
|
xml |
암시적 |
|
|
|
다음 예에서는 사용자 정의 형식의 인스턴스 ComplexNumber를 xml로 명시적으로 변환하고 이에 대해 XQuery 식을 호출합니다.
DECLARE @c ComplexNumber
SET @c = CONVERT(ComplexNumber, '(1,2i)')
SELECT CAST(@c AS xml).query('//Real/text()')
다음 예에서는 암시적으로 xml 데이터를 사용자 정의 형식 ComplexNumber의 인스턴스로 변환합니다.
DECLARE @x xml, @u ComplexNumber
SET @x = '<ComplexNumber><Real>100</Real><Imaginary>4</Imaginary></ComplexNumber>'
SET @u = @x -- implicit convert
SELECT @u.ToString()
자세한 내용은 CAST 및 CONVERT(Transact-SQL)를 참조하십시오.
SQL 클라이언트에 사용자 정의 형식 값 반환
SELECT 또는 FETCH 문의 결과로 사용자 정의 형식의 열이나 식이 SQL 클라이언트에 반환되면 클라이언트 API가 관리되는 API(ADO.NET)인지 아니면 관리되지 않는 API(ODBC 또는 OLE DB)인지에 따라 클라이언트 API의 열 액세스 방법이 결정됩니다. 클라이언트가 ADO.NET을 사용하는 경우 SqlDataReader 클래스의 GetValue 메서드를 사용하여 해당 유형의 인스턴스를 이진 값으로 검색하거나 개체로 검색할 수 있습니다. 클라이언트가 OLE DB를 사용하는 경우 사용자 정의 형식 값을 이진 값으로 받습니다. ODBC를 사용하는 경우 클라이언트는 사용자 정의 형식 값을 이진 값으로만 받습니다.
사용자 정의 형식에 ORDER BY, GROUP BY 및 PARTITION BY 절 사용
이진 순서 지정을 지원하는 사용자 정의 형식에 대해 ORDER BY, GROUP BY 및 PARTITION BY 작업을 수행할 수 있습니다. 유형 정의의 일부로서 지정된 SqlUserDefinedType 특성의 IsByteOrdered 플래그가 True로 설정되어 있는 유형은 이진 순서로 정렬됩니다. 이 플래그는 해당 유형의 이진 표현이 의미상으로 해당 유형에 적합한 순서임을 나타냅니다.
사용자 정의 형식 열에 인덱스 작성
사용자 정의 형식에서 이진 순서 지정이 지원되는 경우 사용자 정의 형식 열에 인덱스를 작성할 수 있습니다. 또한 메서드가 결정적인 것으로 표시되어 있다면 사용자 정의 형식 열 외부에 메서드 호출로서 정의된 계산 열에도 인덱스를 작성할 수 있습니다. 자세한 내용은 CLR 사용자 정의 형식를 참조하십시오.