Compartir a través de


Metadatos: Parámetro y conjunto de filas

Aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Analítica (PDW)Base de datos SQL en Microsoft Fabric

Descargar controlador OLE DB

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 DBCOLUMN_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