테이블 반환 매개 변수 행 집합 만들기
적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
소비자는 테이블 반환 매개 변수에 대해 행 집합 개체를 제공할 수 있지만 일반적인 행 집합 개체는 백 엔드 데이터 저장소에 대해 구현되므로 성능이 제한됩니다. 이러한 이유로 소비자는 SQL Server용 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 출력 매개 변수를 통해 OLE DB Driver for SQL Server에서 테이블 반환 매개 변수 행 집합 개체를 가져옵니다.
동적 시나리오
소비자에 형식 정보가 없는 경우 IOpenRowset::OpenRowset을 사용하여 테이블 반환 매개 변수 행 집합 개체를 인스턴스화해야 합니다. 소비자가 공급자에게 제공해야 하는 것은 모두 형식 이름입니다.
이 시나리오에서 공급자는 소비자를 대신하여 서버에서 테이블 반환 매개 변수 행 집합 개체에 대한 형식 정보를 가져옵니다.
pTableID 및 pUnkOuter 매개 변수는 정적 시나리오에서와 같이 설정해야 합니다. 그런 다음 OLE DB Driver for SQL Server는 서버에서 형식 정보(열 정보 및 제약 조건)를 가져오고 ppRowset 매개 변수를 통해 테이블 반환 매개 변수 행 집합 개체를 반환합니다. 이 경우 서버와의 통신이 필요하므로 이 작업은 정적 시나리오와 같은 방식으로 수행되지 않습니다. 동적 시나리오는 매개 변수가 있는 프로시저 호출에서만 작동합니다.