다음을 통해 공유


매개 변수 및 행 집합 메타데이터

이 항목에서는 향상된 OLE DB 날짜 및 시간 기능과 관련하여 다음과 같은 형식 및 형식 멤버에 대한 정보를 제공합니다.

  • DBBINDING 구조

  • ICommandWithParameters::GetParameterInfo

  • ICommandWithParameters::SetParameterInfo

  • IColumnsRowset::GetColumnsRowset

  • IColumnsInfo::GetColumnInfo

ICommandWithParameters::GetParameterInfo

다음은 prgParamInfo를 통해 DBPARAMINFO 구조에 반환되는 정보입니다.

매개 변수 유형

wType

ulParamSize

bPrecision

bScale

dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE

date

DBTYPE_DBDATE

6

10

0

선택한

time

DBTYPE_DBTIME2

10

8, 10..16

0..7

집합

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

선택한

datetime

DBTYPE_DBTIMESTAMP

16

23

3

선택한

datetime2

DBTYPE_DBTIMESTAMP

16

19,21..27

0..7

집합

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26,28..34

0..7

집합

값 범위가 연속되지 않을 수도 있습니다. 이러한 경우는 소수 부분 자릿수가 0보다 커서 소수점을 추가했을 때 발생합니다.

DBPARAMFLAGS_SS_ISVARIABLESCALE은 SQL Server 2008(또는 이후 버전) 서버에 연결된 경우에만 유효합니다. 하위 수준 서버에 연결된 경우에는 DBPARAMFLAGS_SS_ISVARIABLESCALE이 설정되지 않습니다.

ICommandWithParameters::SetParameterInfo 및 암시적 매개 변수 유형

DBPARAMBINDINFO 구조에 제공된 정보는 다음을 준수해야 합니다.

pwszDataSourceType

(공급자별로 다름)

pwszDataSourceType

(OLE DB 일반)

ulParamSize

bScale

 

DBTYPE_DATE

6

무시됨

date

DBTYPE_DBDATE

6

무시됨

 

DBTYPE_DBTIME

10

무시됨

time

DBTYPE_DBTIME2

10

0..7

smalldatetime

 

16

무시됨

datetime

 

16

무시됨

datetime2 또는 DBTYPE_DBTIMESTAMP

DBTYPE_DBTIMESTAMP

16

0..7

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

0..7

bPrecision 매개 변수가 무시됩니다.

"DBPARAMFLAGS_SS_ISVARIABLESCALE"은 데이터를 서버로 보낼 때 무시됩니다. 응용 프로그램은 공급자별 유형 이름 "datetime" 및 "smalldatetime"을 사용하여 레거시 TDS(Tabular Data Stream) 유형의 사용을 강제할 수 있습니다. SQL Server 2008 이상 버전의 서버에 연결된 경우 "datetime2" 형식이 사용되며, 유형 이름이 "datetime2" 또는 "DBTYPE_DBTIMESTAMP"이면 필요에 따라 암시적 서버 변환이 발생합니다. 공급자별 유형 이름 "datetime" 또는 "smalldatetime"을 사용하는 경우 bScale은 무시됩니다. 그렇지 않으면 응용 프로그램에서 bScale이 올바르게 설정되었는지 확인해야 합니다. "DBTYPE_DBTIMESTAMP"를 사용하는 SQL Server 2005의 MDAC 및 SQL Server Native Client에서 업그레이드된 응용 프로그램은 bScale을 올바르게 설정하지 않을 경우 실패합니다. SQL Server 2008 이전 버전의 서버 인스턴스에 연결된 경우 "DBTYPE_DBTIMESTAMP"가 있는 bScale 값이 0 또는 3이 아니면 오류이며 E_FAIL이 반환됩니다.

ICommandWithParameters::SetParameterInfo를 호출하지 않으면 공급자는 다음과 같이 IAccessor::CreateAccessor에 지정된 바인딩 유형에서 서버 유형을 유추합니다.

바인딩 유형

pwszDataSourceType

(공급자별로 다름)

DBTYPE_DATE

datetime2(0)

DBTYPE_DBDATE

date

DBTYPE_DBTIME

time(0)

DBTYPE_DBTIME2

time(7)

DBTYPE_DBTIMESTAMP

datetime2(7)

DBTYPE_DBTIMESTAMPOFFSET

datetimeoffset(7)

IColumnsRowset::GetColumnsRowset

IColumnsRowset::GetColumnsRowset은 다음 열을 반환합니다.

열 유형

DBCOLUMN_TYPE

DBCOLUM_COLUMNSIZE

DBCOLUMN_PRECISION

DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION

DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE

date

DBTYPE_DBDATE

6

10

0

선택한

time

DBTYPE_DBTIME2

10

8, 10..16

0..7

집합

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

선택한

datetime

DBTYPE_DBTIMESTAMP

16

23

3

선택한

datetime2

DBTYPE_DBTIMESTAMP

16

19, 21..27

0..7

집합

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26, 28..34

0..7

집합

DBCOLUMN_FLAGS에서 날짜/시간 유형에 대해 DBCOLUMNFLAGS_ISFIXEDLENGTH는 항상 true이지만 다음과 같은 플래그는 항상 false입니다.

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER

  • DBCOLUMNFLAGS_MAYDEFER

나머지 플래그(DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE 및 DBCOLUMNFLAGS_WRITEUNKNOWN)는 열이 정의된 방법 및 실제 쿼리에 따라 설정될 수 있습니다.

새 플래그 DBCOLUMNFLAGS_SS_ISVARIABLESCALE는 응용 프로그램에서 DBCOLUMN_TYPE이 DBTYPE_DBTIMESTAMP인 열의 서버 유형을 확인할 수 있도록 DBCOLUMN_FLAGS에 제공됩니다. 서버 유형을 확인하려면 DBCOLUMN_SCALE 또는 DBCOLUMN_DATETIMEPRECISION도 사용해야 합니다.

DBCOLUMNFLAGS_SS_ISVARIABLESCALE은 SQL Server 2008(또는 이후 버전) 서버에 연결된 경우에만 유효합니다. 하위 수준 서버에 연결된 경우에는 DBCOLUMNFLAGS_SS_ISVARIABLESCALE이 정의되지 않습니다.

IColumnsInfo::GetColumnInfo

DBCOLUMNINFO 구조는 다음 정보를 반환합니다.

매개 변수 유형

wType

ulColumnSize

bPrecision

bScale

dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE

date

DBTYPE_DBDATE

6

10

0

선택한

time(1..7)

DBTYPE_DBTIME2

10

8, 10..16

0..7

집합

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

선택한

datetime

DBTYPE_DBTIMESTAMP

16

23

3

선택한

datetime2

DBTYPE_DBTIMESTAMP

16

19, 21..27

0..7

집합

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26, 28..34

0..7

집합

dwFlags에서 날짜/시간 유형에 대해 DBCOLUMNFLAGS_ISFIXEDLENGTH는 항상 true이지만 다음과 같은 플래그는 항상 false입니다.

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER, MAYDEFER

나머지 플래그(DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE 및 DBCOLUMNFLAGS_WRITEUNKNOWN)가 설정될 수 있습니다.

새 플래그 DBCOLUMNFLAGS_SS_ISVARIABLESCALE은 응용 프로그램에서 wType이 DBTYPE_DBTIMESTAMP인 열의 서버 유형을 확인할 수 있도록 dwFlags에 제공됩니다. 서버 유형을 확인하려면 bScale도 사용해야 합니다.

참고 항목

개념