Partilhar 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 aos aprimoramentos de data e hora de OLE DB.

  • 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

Limpar

time

DBTYPE_DBTIME2

10

8, 10..16

0..7

Definir

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Limpar

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Limpar

datetime2

DBTYPE_DBTIMESTAMP

16

19,21..27

0..7

Definir

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26,28..34

0..7

Definir

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 ou posterior. 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

Ignorado

date

DBTYPE_DBDATE

6

Ignorado

 

DBTYPE_DBTIME

10

Ignorado

time

DBTYPE_DBTIME2

10

0..7

smalldatetime

 

16

Ignorado

datetime

 

16

Ignorado

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 a 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

Limpar

time

DBTYPE_DBTIME2

10

8, 10..16

0..7

Definir

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Limpar

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Limpar

datetime2

DBTYPE_DBTIMESTAMP

16

19, 21..27

0..7

Definir

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26, 28..34

0..7

Set

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

  • 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 ou posterior. 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

Limpar

time(1..7)

DBTYPE_DBTIME2

10

8, 10..16

0..7

Definir

smalldatetime

DBTYPE_DBTIMESTAMP

16

16

0

Limpar

datetime

DBTYPE_DBTIMESTAMP

16

23

3

Limpar

datetime2

DBTYPE_DBTIMESTAMP

16

19, 21..27

0..7

Definir

datetimeoffset

DBTYPE_DBTIMESTAMPOFFSET

20

26, 28..34

0..7

Definir

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

  • 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 dwFlagspara permitir que um aplicativo determine o tipo de servidor de colunas, onde wType é DBTYPE_DBTIMESTAMP. bScale também deve ser usado para identificar o tipo de servidor.

Consulte também

Conceitos

Metadados (OLE DB)