Metadatos: Parámetro y conjunto de filas
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)
En este artículo, se proporciona información sobre 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 mediante prgParamInfo:
Tipo de parámetro | wType | ulParamSize | bPrecision | bScale | dwFlags DBPARAMFLAGS_SS_ISVARIABLESCALE |
---|---|---|---|---|---|
date | DBTYPE_DBDATE | 6 | 10 | 0 | Desactivar |
time | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Set |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Desactivar |
datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Desactivar |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Set |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Set |
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 solo es válido cuando se conecta a un servidor que ejecuta SQL Server 2008 (10.0.x) y versiones posteriores. 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 | Omitido | |
date | DBTYPE_DBDATE | 6 | Omitido |
DBTYPE_DBTIME | 10 | Omitido | |
time | DBTYPE_DBTIME2 | 10 | 0..7 |
smalldatetime | 16 | Omitido | |
datetime | 16 | Omitido | |
datetime2 o DBTYPE_DBTIMESTAMP | DBTYPE_DBTIMESTAMP | 16 | 0..7 |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 0..7 |
Se omite el parámetro bPrecision.
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 conecte a los servidores de SQL Server 2008 (10.0.x) y versiones posteriores, 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 omite 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 establezca correctamente. Las aplicaciones actualizadas a partir de MDAC y OLE DB Driver for SQL Server de SQL Server 2005 (9.x) 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 (10.0.x), un valor bScale que no sea 0 o 3 con "DBTYPE_DBTIMESTAMP" es un error y se devolverá E_FAIL.
Cuando no se llama a ICommandWithParameters::SetParameterInfo, el proveedor supone que el tipo de servidor procede 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 | Desactivar |
time | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Set |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Desactivar |
datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Desactivar |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Set |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Set |
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 solo es válido cuando se conecta a un servidor que ejecuta SQL Server 2008 (10.0.x) y versiones posteriores. 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 | Desactivar |
time(1..7) | DBTYPE_DBTIME2 | 10 | 8, 10..16 | 0..7 | Set |
smalldatetime | DBTYPE_DBTIMESTAMP | 16 | 16 | 0 | Desactivar |
datetime | DBTYPE_DBTIMESTAMP | 16 | 23 | 3 | Desactivar |
datetime2 | DBTYPE_DBTIMESTAMP | 16 | 19, 21..27 | 0..7 | Set |
datetimeoffset | DBTYPE_DBTIMESTAMPOFFSET | 20 | 26, 28..34 | 0..7 | Set |
En dwFlags, DBCOLUMNFLAGS_ISFIXEDLENGTH siempre es 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 tiene que usarse para identificar el tipo de servidor.
Consulte también
Compatibilidad con tipos de datos para mejoras de fecha y hora de OLE DB