다음을 통해 공유


SQL Server Native Client에서 테이블 반환 매개 변수 행 집합 만들기

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)

소비자는 테이블 반환 매개 변수에 대해 행 집합 개체를 제공할 수 있지만 일반적인 행 집합 개체는 백 엔드 데이터 저장소에 대해 구현되므로 성능이 제한됩니다. 이러한 이유로 SQL Server Native Client OLE DB 공급자를 사용하면 소비자가 메모리 내 데이터 위에 특수한 행 집합 개체를 만들 수 있습니다. 이 특수 메모리 내 행 집합 개체는 테이블 반환 매개 변수 행 집합이라는 새 COM 개체입니다. 매개 변수 집합과 유사한 기능을 제공합니다.

테이블 반환 매개 변수 행 집합 개체는 여러 세션 수준 인터페이스를 통해 입력 매개 변수에 대해 소비자가 명시적으로 만듭니다. 테이블 반환 매개 변수당 테이블 반환 매개 변수 행 집합 개체의 인스턴스가 하나 있습니다. 소비자는 이미 알려진 메타데이터 정보(정적 시나리오)를 제공하거나 공급자 인터페이스(동적 시나리오)를 통해 검색하여 테이블 반환 매개 변수 행 집합 개체를 만들 수 있습니다. 다음 섹션에서는 이러한 두 가지 시나리오에 대해 설명합니다.

정적 시나리오

형식 정보가 알려져 있는 경우, 소비자는 ITableDefinitionWithConstraints::CreateTableWithConstraints를 사용하여 테이블 반환 매개 변수에 해당하는 테이블 반환 매개 변수 행 집합 개체를 인스턴스화합니다.

guid 필드(pTableID 매개 변수)에는 특수 GUID(CLSID_ROWSET_TVP)가 포함됩니다. pwszName 멤버에는 소비자가 인스턴스화할 테이블 반환 매개 변수 형식의 이름이 포함되어 있습니다. eKind 필드는 DBKIND_GUID_NAME 설정됩니다. 이 이름은 명령문이 임시 SQL인 경우 필요합니다. 프로시저 호출인 경우 이름은 선택 사항입니다.

집계의 경우 소비자는 제어 IUnknown을 사용하여 pUnkOuter 매개 변수를 전달합니다.

테이블 반환 매개 변수 행 집합 개체 속성은 읽기 전용이므로 소비자는 rgPropertySets에서 속성을 설정하지 않을 것으로 예상됩니다.

각 DBCOLUMNDESC 구조체의 rgPropertySets 멤버에 대해 소비자는 각 열에 대한 추가 속성을 지정할 수 있습니다. 이러한 속성은 DBPROPSET_SQLSERVERCOLUMN 속성 집합에 속합니다. 각 열에 대해 계산 및 기본 설정을 지정할 수 있습니다. 또한 Null 허용 여부나 ID 같은 기존 열 속성도 지원합니다.

테이블 반환 매개 변수 행 집합 개체에서 해당 정보를 검색하기 위해 소비자는 IRowsetInfo::GetProperties를 사용합니다.

각 열의 null, 고유, 계산 및 업데이트 상태에 대한 정보를 검색하기 위해 소비자는 IColumnsRowset::GetColumnsRowset 또는 IColumnsInfo::GetColumnInfo를 사용합니다. 이러한 메서드는 각 테이블 반환 매개 변수 행 집합 열에 대해 자세한 정보를 제공합니다.

소비자는 테이블 반환 매개 변수의 각 열 형식을 지정합니다. 이는 SQL Server에서 테이블을 만들 때 열을 지정하는 방법과 유사합니다. 소비자는 ppRowset 출력 매개 변수를 통해 SQL Server Native Client OLE DB 공급자에서 테이블 반환 매개 변수 행 집합 개체를 가져옵니다.

동적 시나리오

소비자에 형식 정보가 없는 경우 IOpenRowset::OpenRowset을 사용하여 테이블 반환 매개 변수 행 집합 개체를 인스턴스화해야 합니다. 소비자가 공급자에게 제공해야 하는 것은 모두 형식 이름입니다.

이 시나리오에서 공급자는 소비자를 대신하여 서버에서 테이블 반환 매개 변수 행 집합 개체에 대한 형식 정보를 가져옵니다.

pTableIDpUnkOuter 매개 변수는 정적 시나리오에서와 같이 설정해야 합니다. 그런 다음 SQL Server Native Client OLE DB 공급자는 서버에서 형식 정보(열 정보 및 제약 조건)를 가져오고 ppRowset 매개 변수를 통해 테이블 반환 매개 변수 행 집합 개체를 반환합니다. 이 작업을 수행하려면 서버와의 통신이 필요하므로 정적 시나리오와 함께 수행되지 않습니다. 동적 시나리오는 매개 변수가 있는 프로시저 호출에서만 작동합니다.

참고 항목

테이블 반환 매개 변수(OLE DB)
테이블 반환 매개 변수 사용(OLE DB)