Metadados - Parâmetro e conjunto de linhas
Este artigo fornece informações sobre os seguintes tipos e membros de tipo, relacionados aos aprimoramentos de data e hora do OLE DB.
Estrutura DBBINDING
ICommandWithParameters::GetParameterInfo
ICommandWithParameters::SetParameterInfo
IColumnsRowset::GetColumnsRowset
IColumnsInfo::GetColumnInfo
ICommandWithParameters::GetParameterInfo
As seguintes informações são retornadas na estrutura DBPARAMINFO através prgParamInfo:
Tipo de parâmetro | wType | ulParamSize | bPrecision | bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
data | DBTYPE_DBDATE | 6 | 10 | 0 | Limpar |
Hora | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Conjunto |
PequenoDateTime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Limpar |
datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Limpar |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Conjunto |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Conjunto |
Observe que, em alguns casos, os intervalos de valores não são contínuos. Isto deve-se à adição de um ponto decimal quando a precisão fracionada é superior a zero.
DBPARAMFLAGS_SS_ISVARIABLESCALE só é válido quando conectado a um servidor que executa o SQL Server 2008 (10.0.x) e versões posteriores. DBPARAMFLAGS_SS_ISVARIABLESCALE nunca é definido quando conectado a servidores de nível inferior.
ICommandWithParameters::SetParameterInfo e tipos de parâmetros implícitos
As informações fornecidas na estrutura DBPARAMBINDINFO devem estar em conformidade com o seguinte:
pwszDataSourceType (específico do prestador) |
pwszDataSourceType (OLE DB genérico) |
ulParamSize | bScale |
---|---|---|---|
DBTYPE_DATE | 6 | Ignorado | |
data | DBTYPE_DBDATE | 6 | Ignorado |
DBTYPE_DBTIME | 10 | Ignorado | |
Hora | DBTYPE_DBTIME2 | 10 | 0..7 |
PequenoDateTime | 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 para o servidor. Os aplicativos podem forçar o uso de tipos de fluxo de dados tabulares (TDS) herdados usando os nomes de tipo específicos do provedor "datetime" e "smalldatetime". Quando conectado a servidores que executam o SQL Server 2008 (10.0.x) e versões posteriores, o formato "datetime2" será usado e uma conversão implícita do servidor 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 atualizados do MDAC e do driver OLE DB para SQL Server do SQL Server 2005 (9.x) que usam "DBTYPE_DBTIMESTAMP" falharão se não definirem bScale corretamente. Quando conectado a instâncias de servidor anteriores ao SQL Server 2008 (10.0.x), um valor bScale diferente de 0 ou 3 com "DBTYPE_DBTIMESTAMP" é um erro e E_FAIL será retornado.
Quando ICommandWithParameters::SetParameterInfo não é chamado, o provedor implica o tipo de servidor do tipo de ligação, conforme especificado em IAccessor::CreateAccessor da seguinte maneira:
Tipo de vinculação |
pwszDataSourceType (específico do prestador) |
---|---|
DBTYPE_DATE | datetime2(0) |
DBTYPE_DBDATE | data |
DBTYPE_DBTIME | tempo(0) |
DBTYPE_DBTIME2 | tempo(7) |
DBTYPE_DBTIMESTAMP | datetime2(7) |
DBTYPE_DBTIMESTAMPOFFSET | datetimeoffset(7) |
IColumnsRowset::GetColumnsRowset
IColumnsRowset::GetColumnsRowset retorna as seguintes colunas:
Tipo de coluna | DBCOLUMN_TYPE | DBCOLUMN_COLUMNSIZE | DBCOLUMN_PRECISION | DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION | DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
data | DBTYPE_DBDATE | 6 | 10 | 0 | Limpar |
Hora | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Conjunto |
PequenoDateTime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Limpar |
datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Limpar |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Conjunto |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Conjunto |
No DBCOLUMN_FLAGS, DBCOLUMNFLAGS_ISFIXEDLENGTH é sempre verdadeiro para 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 real.
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 devem ser usados para identificar o tipo de servidor.
DBCOLUMNFLAGS_SS_ISVARIABLESCALE só é válido quando conectado a um servidor que executa o SQL Server 2008 (10.0.x) e versões posteriores. 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 |
---|---|---|---|---|---|
data | DBTYPE_DBDATE | 6 | 10 | 0 | Limpar |
tempo(1..7) | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Conjunto |
PequenoDateTime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Limpar |
datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Limpar |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Conjunto |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Conjunto |
Em dwFlags, DBCOLUMNFLAGS_ISFIXEDLENGTH é sempre verdadeiro para 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 DBCOLUMNFLAGS_SS_ISVARIABLESCALE de sinalizador é fornecido em dwFlags para 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.
Ver também
Suporte de tipo de dados para melhorias de data e hora do OLE DB