테이블 반환 매개 변수를 포함하는 SQL Server Native Client 명령 실행

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System(PDW)

테이블 반환 매개 변수가 포함된 명령을 실행하려면 다음 두 단계가 필요합니다.

  1. 매개 변수 형식을 지정합니다.

  2. 매개 변수 데이터를 바인딩합니다.

테이블 반환 매개 변수 사양

소비자는 테이블 반환 매개 변수의 형식을 지정할 수 있습니다. 이 정보에는 테이블 반환 매개 변수 형식 이름이 포함됩니다. 테이블 반환 매개 변수에 대한 사용자 정의 테이블 형식이 연결의 현재 기본 스키마에 없는 경우에도 스키마 이름이 포함됩니다. 서버 지원에 따라 소비자는 열 순서와 같은 선택적 메타데이터 정보를 지정할 수 있으며 특정 열의 모든 행에 기본값이 있도록 지정할 수 있습니다.

테이블 반환 매개 변수를 지정하기 위해 소비자는 ISSCommandWithParameter::SetParameterInfo를 호출하며 ISSCommandWithParameters::SetParameterProperties를 옵션으로 호출합니다. 테이블 반환 매개 변수에서 DBPARAMBINDINFO 구조의 pwszDataSourceType 필드는 DBTYPE_TABLE 값을 갖습니다. ulParamSize 필드는 길이를 알 수 없음을 나타내기 위해 ~0으로 설정됩니다. 스키마 이름, 형식 이름, 열 순서 및 기본 열과 같은 테이블 반환 매개 변수의 특정 속성은 ISSCommandWithParameters::SetParameterProperties를 통해 설정할 수 있습니다.

테이블 반환 매개 변수 바인딩

테이블 반환 매개 변수는 모든 행 집합 개체일 수 있습니다. 공급자는 실행 중에 테이블 반환 매개 변수를 서버에 보내는 동안 이 개체에서 읽습니다.

테이블 반환 매개 변수를 바인딩하기 위해 소비자는 IAccessor::CreateAccessor를 호출합니다. 테이블 반환 매개 변수에 대한 DBBINDING 구조체의 wType 필드는 DBTYPE_TABLE 설정됩니다. DBBINDING 구조체의 pObject 멤버는 NULL이 아니고 pObjectiid 멤버는 IID_IRowset 또는 다른 테이블 반환 매개 변수 행 집합 개체 인터페이스로 설정됩니다. DBBINDING 구조의 나머지 필드는 스트림된 BLOB에 설정할 때와 같은 방법으로 설정됩니다.

테이블 반환 매개 변수 및 테이블 반환 매개 변수와 연결된 행 집합 개체에 대한 바인딩에서 다음 제한 사항이 적용됩니다.

  • 테이블 반환 매개 변수 행 집합 열 데이터에 허용되는 유일한 상태 값은 DBSTATUS_S_ISNULL 및 DBSTATUS_S_OK. DBSTATUS_S_DEFAULT 오류가 발생하며 바운드 상태 값은 DBSTATUS_E_BADSTATUS 설정됩니다.

  • 테이블 반환 매개 변수는 상태 DBSTATUS_S_DEFAULT 표시할 수 있습니다. 유효한 값은 DBSTATUS_S_DEFAULT DBSTATUS_S_OK. 상태가 DBSTATUS_S_DEFAULT 설정되면 테이블 반환 매개 변수의 값은 빈 테이블에 해당합니다.

  • 테이블 반환 매개 변수(ID 또는 계산 열)의 읽기 전용 열은 SSPROP_PARAM_TABLE_DEFAULT_COLUMNS 속성을 사용하여 기본적으로 표시되어야 합니다. 기본값이 있는 열은 특정 테이블 반환 매개 변수에 대한 열의 데이터 값에 기본값을 사용할 수 있도록 SSPROP_PARAM_TABLE_DEFAULT_COLUMNS 속성을 통해 기본값으로 표시되어야 합니다. 공급자는 기본값으로 표시된 열에 바인딩된 데이터 값을 무시합니다.

  • SSPROP_PARAM_TABLE_DEFAULT 설정되지 않는 한 DBPROP_COL_AUTOINCREMENT 또는 SSPROP_COL_COMPUTED 있는 열에 대한 데이터가 서버로 전송됩니다.

참고 항목

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