Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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::GetParameterInfoICommandWithParameters::SetParameterInfoIColumnsRowset::GetColumnsRowsetIColumnsInfo::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 |
|---|---|---|---|---|---|
| data | DBTYPE_DBDATE | 6 | 10 | 0 | Limpar |
| Hora | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Conjunto |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Limpar |
| Data e hora | DBTYPE_DBTIMESTAMP | 16 | vinte e três | 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. 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 do 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 | |
| data | DBTYPE_DBDATE | 6 | Ignorado |
| DBTYPE_DBTIME | 10 | Ignorado | |
| Hora | DBTYPE_DBTIME2 | 10 | 0..7 |
| smalldatetime | 16 | Ignorado | |
| Data e hora | 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 (fluxo de dados tabulares) herdados usando os nomes de tipo "" e "datetimesmalldatetime" específicos do provedor. Quando conectado aos servidores do SQL Server 2008 (ou posterior), o formato "datetime2" será usado e ocorrerá uma conversão de servidor implícita, se necessário, quando o nome do tipo for "datetime2" ou "DBTYPE_DBTIMESTAMP".
O 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 o bScale esteja definido corretamente. Os aplicativos atualizados do MDAC e do SQL Server Native Client do SQL Server 2005 que usam "DBTYPE_DBTIMESTAMP" falharão se não definirem o bScale corretamente. Quando conectado a instâncias de servidor anteriores ao SQL Server 2008, 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 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 | data |
| 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 |
|---|---|---|---|---|---|
| data | DBTYPE_DBDATE | 6 | 10 | 0 | Limpar |
| Hora | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Conjunto |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Limpar |
| Data e hora | DBTYPE_DBTIMESTAMP | 16 | vinte e três | 3 | Limpar |
| `datetime2` | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Conjunto |
| datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Conjunto |
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 do 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 |
|---|---|---|---|---|---|
| data | DBTYPE_DBDATE | 6 | 10 | 0 | Limpar |
| time(1..7) | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Conjunto |
| smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Limpar |
| Data e hora | DBTYPE_DBTIMESTAMP | 16 | vinte e três | 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 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.