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 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 de prgParamInfo:

Tipo de parâmetro wType ulParamSize bPrecision bScale dwFlags

DBPARAMFLAGS_SS_ISVARIABLESCALE
date DBTYPE_DBDATE 6 10 0 Liberada
time DBTYPE_DBTIME2 10 8, 10..16 0..7 Definir
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Liberada
DATETIME DBTYPE_DBTIMESTAMP 16 23 3 Liberada
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 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 a servidores SQL Server 2008 (ou posterior), o formato "datetime2" será usado e ocorrerá uma conversão implícita de servidor, 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, as aplicações devem garantir que bScale esteja definido corretamente. Os aplicativos atualizados do MDAC e SQL Server Native Client do SQL Server 2005 que usam "DBTYPE_DBTIMESTAMP" falharão se não definirem bScale corretamente. Quando estiver conectado a instâncias do servidor anteriores ao SQL Server 2008, um valor bScale diferente de 0 ou 3 com "DBTYPE_DBTIMESTAMP" será considerado um erro e E_FAIL será retornado.

Quando ICommandWithParameters::SetParameterInfo não é chamado, o provedor impera o tipo de servidor do 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 Liberada
time DBTYPE_DBTIME2 10 8, 10..16 0..7 Definir
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Liberada
DATETIME DBTYPE_DBTIMESTAMP 16 23 3 Liberada
datetime2 DBTYPE_DBTIMESTAMP 16 19, 21..27 0..7 Definir
datetimeoffset DBTYPE_DBTIMESTAMPOFFSET 20 26, 28..34 0..7 Definir

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 Liberada
time(1..7) DBTYPE_DBTIME2 10 8, 10..16 0..7 Definir
smalldatetime DBTYPE_DBTIMESTAMP 16 16 0 Liberada
DATETIME DBTYPE_DBTIMESTAMP 16 23 3 Liberada
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 tem o valor verdadeiro para os tipos de data/hora e os seguintes sinalizadores sempre têm o valor falso:

  • 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, em que wType é DBTYPE_DBTIMESTAMP. bScale também precisa ser usado para identificar o tipo de servidor.

Consulte Também

Metadados (OLE DB)