Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se proporciona información acerca de los siguientes tipos y miembros de tipo relacionados con las mejoras de fecha y hora de OLE DB.
Estructura DBBINDING
ICommandWithParameters::GetParameterInfo
ICommandWithParameters::SetParameterInfo
IColumnsRowset::GetColumnsRowset
IColumnsInfo::GetColumnInfo
ICommandWithParameters::GetParameterInfo
La siguiente información se devuelve en la estructura DBPARAMINFO a través de prgParamInfo:
Tipo de parámetro |
wType |
ulParamSize |
bPrecision |
bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
date |
DBTYPE_DBDATE |
6 |
10 |
0 |
Borrar |
time |
DBTYPE_DBTIME2 |
10 |
8, 10..16 |
0..7 |
Set |
smalldatetime |
DBTYPE_DBTIMESTAMP |
16 |
16 |
0 |
Borrar |
datetime |
DBTYPE_DBTIMESTAMP |
16 |
23 |
3 |
Borrar |
datetime2 |
DBTYPE_DBTIMESTAMP |
16 |
19,21..27 |
0..7 |
Set |
datetimeoffset |
DBTYPE_DBTIMESTAMPOFFSET |
20 |
26,28..34 |
0..7 |
Establecido |
Observe que en algunos casos los intervalos de valores no son continuos. Esto se debe a la adición de un separador decimal cuando la precisión fraccionaria es mayor que cero.
DBPARAMFLAGS_SS_ISVARIABLESCALE es únicamente válido cuando se conecta a un servidor SQL Server 2008 o posterior. DBPARAMFLAGS_SS_ISVARIABLESCALE no se establece nunca cuando se conecta a servidores de nivel inferior.
ICommandWithParameters::SetParameterInfo y tipos de parámetro implícitos
La información que se proporciona en la estructura DBPARAMBINDINFO debe cumplir lo siguiente:
pwszDataSourceType (depende del proveedor) |
pwszDataSourceType (OLE DB genérico) |
ulParamSize |
bScale |
|---|---|---|---|
|
DBTYPE_DATE |
6 |
No se tiene en cuenta |
date |
DBTYPE_DBDATE |
6 |
No se tiene en cuenta |
|
DBTYPE_DBTIME |
10 |
No se tiene en cuenta |
time |
DBTYPE_DBTIME2 |
10 |
0..7 |
smalldatetime |
|
16 |
No se tiene en cuenta |
datetime |
|
16 |
No se tiene en cuenta |
datetime2 o DBTYPE_DBTIMESTAMP |
DBTYPE_DBTIMESTAMP |
16 |
0..7 |
datetimeoffset |
DBTYPE_DBTIMESTAMPOFFSET |
20 |
0..7 |
El parámetro bPrecision no se tiene en cuenta.
No se tiene en cuenta "DBPARAMFLAGS_SS_ISVARIABLESCALE" al enviar los datos al servidor. Las aplicaciones pueden exigir el uso de tipos heredados de flujo TDS mediante los nombres de tipo específico del proveedor "datetime" y "smalldatetime". Cuando se conecta a los servidores de SQL Server 2008 (o posterior), se usará el formato "datetime2" y, si es necesario, se producirá una conversión implícita de servidor cuando el nombre de tipo sea "datetime2" o "DBTYPE_DBTIMESTAMP". bScale se pasa por alto si se usan los nombres de tipo específico del proveedor "datetime" o "smalldatetime". De lo contrario, las aplicaciones deben asegurarse de que bScale se ha establecido correctamente. Las aplicaciones actualizadas de MDAC y SQL Server Native Client de SQL Server 2005 que usan "DBTYPE_DBTIMESTAMP" generarán un error si no establecen bScale correctamente. Cuando esté conectado a las instancias de servidor anteriores a SQL Server 2008, un valor bScale que no sea 0 ó 3 con "DBTYPE_DBTIMESTAMP" es un error y se devolverá E_FAIL.
Cuando no se llama a ICommandWithParameters::SetParameterInfo, el proveedor implica al tipo de servidor a partir del tipo de enlace como se especifica en IAccessor::CreateAccessor de la manera siguiente:
Tipo de enlace |
pwszDataSourceType (depende del proveedor) |
|---|---|
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 devuelve las columnas siguientes:
Tipo de columna |
DBCOLUMN_TYPE |
DBCOLUM_COLUMNSIZE |
DBCOLUMN_PRECISION |
DBCOLUMN_SCALE, DBCOLUMN_DATETIMEPRECISION |
DBCOLUMN_FLAGS, DBCOLUMNFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
date |
DBTYPE_DBDATE |
6 |
10 |
0 |
Borrar |
time |
DBTYPE_DBTIME2 |
10 |
8, 10..16 |
0..7 |
Set |
smalldatetime |
DBTYPE_DBTIMESTAMP |
16 |
16 |
0 |
Borrar |
datetime |
DBTYPE_DBTIMESTAMP |
16 |
23 |
3 |
Borrar |
datetime2 |
DBTYPE_DBTIMESTAMP |
16 |
19, 21..27 |
0..7 |
Set |
datetimeoffset |
DBTYPE_DBTIMESTAMPOFFSET |
20 |
26, 28..34 |
0..7 |
Establecido |
DBCOLUMN_FLAGS, DBCOLUMNFLAGS_ISFIXEDLENGTH es siempre TRUE para los tipos de fecha y hora, y las marcas siguientes son siempre FALSE:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER
DBCOLUMNFLAGS_MAYDEFER
Se pueden establecer las marcas restantes (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE y DBCOLUMNFLAGS_WRITEUNKNOWN), dependiendo de cómo se defina la columna y la consulta real.
Se proporciona una nueva marca DBCOLUMNFLAGS_SS_ISVARIABLESCALE en DBCOLUMN_FLAGS para permitir que una aplicación determine el tipo de servidor de columnas, donde DBCOLUMN_TYPE es DBTYPE_DBTIMESTAMP. DBCOLUMN_SCALE o DBCOLUMN_DATETIMEPRECISION también se debe usar para identificar el tipo de servidor.
DBCOLUMNFLAGS_SS_ISVARIABLESCALE es únicamente válido cuando se conecta a un servidor SQL Server 2008 o posterior. DBCOLUMNFLAGS_SS_ISVARIABLESCALE no está definido cuando se conecta a servidores de nivel inferior.
IColumnsInfo::GetColumnInfo
La estructura DBCOLUMNINFO devuelve la información siguiente:
Tipo de parámetro |
wType |
ulColumnSize |
bPrecision |
bScale |
dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
|---|---|---|---|---|---|
date |
DBTYPE_DBDATE |
6 |
10 |
0 |
Borrar |
time(1..7) |
DBTYPE_DBTIME2 |
10 |
8, 10..16 |
0..7 |
Set |
smalldatetime |
DBTYPE_DBTIMESTAMP |
16 |
16 |
0 |
Borrar |
datetime |
DBTYPE_DBTIMESTAMP |
16 |
23 |
3 |
Borrar |
datetime2 |
DBTYPE_DBTIMESTAMP |
16 |
19, 21..27 |
0..7 |
Set |
datetimeoffset |
DBTYPE_DBTIMESTAMPOFFSET |
20 |
26, 28..34 |
0..7 |
Establecido |
En dwFlags DBCOLUMNFLAGS_ISFIXEDLENGTH es siempre TRUE para los tipos de fecha y hora, y las marcas siguientes son siempre FALSE:
DBCOLUMNFLAGS_CACHEDEFERRED
DBCOLUMNFLAGS_ISBOOKMARK
DBCOLUMNFLAGS_ISCHAPTER
DBCOLUMNFLAGS_ISLONG
DBCOLUMNFLAGS_ISROWID
DBCOLUMNFLAGS_ISROWVER, MAYDEFER
Se pueden establecer las marcas restantes (DBCOLUMNFLAGS_ISNULLABLE, DBCOLUMNFLAGS_MAYBENULL, DBCOLUMNFLAGS_WRITE y DBCOLUMNFLAGS_WRITEUNKNOWN).
Se proporciona una nueva marca DBCOLUMNFLAGS_SS_ISVARIABLESCALE en dwFlags para permitir que una aplicación determine el tipo de servidor de columnas, donde wType es DBTYPE_DBTIMESTAMP. bScale también se debe usar para identificar el tipo de servidor.