Compartilhar via


Parâmetro e metadados de conjunto de linhas

Este tópico fornece informações sobre o tipo e os membros de tipo a seguir, relacionados com os aprimoramentos de data e hora de OLE DB para SQL Server 2008.

  • Estrutura DBBINDING

  • ICommandWithParameters::GetParameterInfo

  • ICommandWithParameters::SetParameterInfo

  • IColumnsRowset::GetColumnsRowset

  • IColumnsInfo::GetColumnInfo

ICommandWithParameters::GetParameterInfo

As seguintes informações são retornadas na estrutura DBPARAMINFO por meio do prgParamInfo:

Tipo de parâmetro

wType

ulParamSize

bPrecision

bScale

dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE

date

DBTYPE_DBDATE

6

10

0

Clear

time

DBTYPE_DBTIME2

10

8, 10..16

0..7

Set

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Clear

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Clear

datetime2

DBTYPE_DBTIMESTAMP

16

19,21..27

0..7

Set

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26,28..34

0..7

Set

Observe que em alguns casos os intervalos de valores não são contínuos. Isso se deve à adição de um ponto decimal quando a precisão fracionária é maior que zero.

DBPARAMFLAGS_SS_ISVARIABLESCALE só é válido quando conectado a um servidor SQL Server 2008. DBPARAMFLAGS_SS_ISVARIABLESCALE nunca é definido quando conectado a servidores de nível inferior.

ICommandWithParameters::SetParameterInfo e tipos de parâmetro implícitos

As informações fornecidas na estrutura DBPARAMBINDINFO devem estar de acordo com o seguinte:

pwszDataSourceType

(específico do provedor)

pwszDataSourceType

(OLE DB genérico)

ulParamSize

bScale

 

DBTYPE_DATE

6

Ignored

date

DBTYPE_DBDATE

6

Ignored

 

DBTYPE_DBTIME

10

Ignored

time

DBTYPE_DBTIME2

10

0..7

smalldatetime

 

16

Ignored

datetime

 

16

Ignored

datetime2 ou DBTYPE_DBTIMESTAMP

DBTYPE_DBTIMESTAMP

16

0..7

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

0..7

O parâmetro bPrecision é ignorado.

"DBPARAMFLAGS_SS_ISVARIABLESCALE" é ignorado ao enviar dados ao servidor. Os aplicativos podem forçar o uso de tipos TDS (tabular-data stream) herdados usando nomes de tipo específicos do provedor "datetime" e "smalldatetime". Quando conectado aos servidores SQL Server 2008 (ou posterior), o formato "datetime2" será usado e uma conversão de servidor implícita ocorrerá, se necessário, quando o nome do tipo for "datetime2" ou "DBTYPE_DBTIMESTAMP". bScale será ignorado se os nomes de tipo específicos do provedor "datetime" ou "smalldatetime" forem usados. Caso contrário, os aplicativos devem garantir que bScale esteja definido corretamente. Os aplicativos foram atualizados do MDAC e SQL Server Native Client do SQL Server 2005 que usa "DBTYPE_DBTIMESTAMP" apresentará falha se eles não definirem bScale corretamente. Quando conectado a instâncias do servidor anteriores ao SQL Server 2008, um valor bScale diferente de 0 ou 3 com "DBTYPE_DBTIMESTAMP" é considerado erro e E_FAIL será retornado.

Quando ICommandWithParameters::SetParameterInfo não é chamado, o provedor deduz o tipo de servidor pelo tipo de associação, conforme especificado em IAccessor::CreateAccessor da seguinte maneira:

Tipo de associação

pwszDataSourceType

(específico do provedor)

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 retorna as seguintes colunas:

Tipo de coluna

DBCOLUMN_TYPE

DBCOLUM_COLUMNSIZE

DBCOLUMN_PRECISION

DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION

DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE

date

DBTYPE_DBDATE

6

10

0

Clear

time

DBTYPE_DBTIME2

10

8, 10..16

0..7

Set

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Clear

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Clear

datetime2

DBTYPE_DBTIMESTAMP

16

19, 21..27

0..7

Set

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26, 28..34

0..7

Set

Em DBCOLUMN_FLAGS, DBCOLUMNFLAGS_ISFIXEDLENGTH é sempre verdadeiro para os tipos de data/hora e os seguintes sinalizadores são sempre falsos:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER

  • DBCOLUMNFLAGS_MAYDEFER

Os sinalizadores restantes (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE e DBCOLUMNFLAGS_WRITEUNKNOWN) podem ser definidos, dependendo de como a coluna é definida e da consulta propriamente dita.

Um novo sinalizador DBCOLUMNFLAGS_SS_ISVARIABLESCALE é fornecido em DBCOLUMN_FLAGS para permitir que um aplicativo determine o tipo de servidor de colunas, onde DBCOLUMN_TYPE é DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE ou DBCOLUMN_DATETIMEPRECISION também deve ser usado para identificar o tipo de servidor.

DBCOLUMNFLAGS_SS_ISVARIABLESCALE só é válido quando conectado a um servidor SQL Server 2008. DBCOLUMNFLAGS_SS_ISVARIABLESCALE é indefinido quando conectado a servidores de nível inferior.

IColumnsInfo::GetColumnInfo

A estrutura DBCOLUMNINFO retorna as seguintes informações:

Tipo de parâmetro

wType

ulColumnSize

bPrecision

bScale

dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE

date

DBTYPE_DBDATE

6

10

0

Clear

time(1..7)

DBTYPE_DBTIME2

10

8, 10..16

0..7

Set

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Clear

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Clear

datetime2

DBTYPE_DBTIMESTAMP

16

19, 21..27

0..7

Set

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26, 28..34

0..7

Set

Em dwFlags, DBCOLUMNFLAGS_ISFIXEDLENGTH é sempre verdadeiro para os tipos de data/hora e os seguintes sinalizadores são sempre falsos:

  • DBCOLUMNFLAGS_CACHEDEFERRED

  • DBCOLUMNFLAGS_ISBOOKMARK

  • DBCOLUMNFLAGS_ISCHAPTER

  • DBCOLUMNFLAGS_ISLONG

  • DBCOLUMNFLAGS_ISROWID

  • DBCOLUMNFLAGS_ISROWVER, MAYDEFER

Os sinalizadores restantes (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE e DBCOLUMNFLAGS_WRITEUNKNOWN) podem ser definidos.

Um novo sinalizador DBCOLUMNFLAGS_SS_ISVARIABLESCALE é fornecido em dwFlags para permitir que um aplicativo determine o tipo de servidor de colunas, onde wType é DBTYPE_DBTIMESTAMP. bScale também deve ser definido para identificar o tipo do servidor.

Consulte também

Conceitos