Estructura SSVARIANT
La estructura SSVARIANT, que se define en sqlncli.h, corresponde a un valor DBTYPE_SQLVARIANT en el proveedor OLEDB de SQL Server Native Client.
SSVARIANT es una unión de discriminación. Dependiendo del valor del miembro vt, el consumidor puede determinar qué miembro se ha de leer. Los valores de vt corresponden a tipos de datos de SQL Server. Por lo tanto, la estructura SSVARIANT puede contener cualquier tipo de SQL Server. Para obtener más información sobre la estructura de datos para los tipos OLE DB estándar, vea Type Indicators.
Comentarios
Cuando DataTypeCompat==80, varios subtipos SSVARIANT se convierten en cadenas. Por ejemplo, los siguientes valores de vt se mostrarán en SSVARIANT como VT_SS_WVARSTRING:
VT_SS_DATETIMEOFFSET
VT_SS_DATETIME2
VT_SS_TIME2
VT_SS_DATE
Cuando DateTypeCompat == 0, estos tipos se mostrarán en su forma nativa.
Para obtener más información acerca de SSPROP_INIT_DATATYPECOMPATIBILITY, vea Usar palabras clave de cadena de conexión con SQL Server Native Client.
El archivo sqlncli.h contiene macros de acceso a tipos de datos variant que simplifican la eliminación de referencias a los tipos de miembro de la estructura SSVARIANT. Un ejemplo sería V_SS_DATETIMEOFFSET, que puede utilizarse tal y como se indica a continuación:
memcpy(&V_SS_DATETIMEOFFSET(pssVar).tsoDateTimeOffsetVal, pDTO, cbNative);
V_SS_DATETIMEOFFSET(pssVar).bScale = bScale;
Para obtener el conjunto completo de macros de acceso para cada miembro de la estructura SSVARIANT, consulte el archivo sqlncli.hi.
En la siguiente tabla se describen los miembros de la estructura SSVARIANT:
Miembro |
Indicador de tipo OLE DB |
Tipo de datos de OLE DB C |
Valor de vt |
Comentarios |
---|---|---|---|---|
vt |
SSVARTYPE |
Especifica el tipo de valor incluido en la estructura SSVARIANT. |
||
bTinyIntVal |
DBTYPE_UI1 |
BYTE |
VT_SS_UI1 |
Admite el tipo de datos tinyint de SQL Server. |
sShortIntVal |
DBTYPE_I2 |
SHORT |
VT_SS_I2 |
Admite el tipo de datos smallint de SQL Server. |
lIntVal |
DBTYPE_I4 |
LONG |
VT_SS_I4 |
Admite el tipo de datos int de SQL Server. |
llBigIntVal |
DBTYPE_I8 |
LARGE_INTEGER |
VT_SS_I8 |
Admite el tipo de datos bigint de SQL Server. |
fltRealVal |
DBTYPE_R4 |
float |
VT_SS_R4 |
Admite el tipo de datos real de SQL Server. |
dblFloatVal |
DBTYPE_R8 |
double |
VT_SS_R8 |
Admite el tipo de datos float de SQL Server. |
cyMoneyVal |
DBTYPE_CY |
LARGE_INTEGER |
VT_SS_MONEY VT_SS_SMALLMONEY |
Admite los tipos de datos money y smallmoney de SQL Server. |
fBitVal |
DBTYPE_BOOL |
VARIANT_BOOL |
VT_SS_BIT |
Admite el tipo de datos bit de SQL Server. |
rgbGuidVal |
DBTYPE_GUID |
GUID |
VT_SS_GUID |
Admite el tipo de datos uniqueidentifier de SQL Server. |
numNumericVal |
DBTYPE_NUMERIC |
DB_NUMERIC |
VT_SS_NUMERIC |
Admite el tipo de datos numeric de SQL Server. |
dDateVal |
DBTYPE_DATE |
DBDATE |
VT_SS_DATE |
Admite el tipo de datos date de SQL Server. |
tsDateTimeVal |
DBTYPE_DBTIMESTAMP |
DBTIMESTAMP |
VT_SS_SMALLDATETIME VT_SS_DATETIME VT_SS_DATETIME2 |
Admite los tipos de datos smalldatetime, datetime y datetime2 de SQL Server. |
Time2Val |
DBTYPE_DBTIME2 |
DBTIME2 |
VT_SS_TIME2 |
Admite el tipo de datos time de SQL Server. Incluye los miembros siguientes: tTime2Val (DBTIME2) bScale (BYTE) Especifica la escala para el valor de tTime2Val. |
DateTimeVal |
DBTYPE_DBTIMESTAMP |
DBTIMESTAMP |
VT_SS_DATETIME2 |
Admite el tipo de datos datetime2 de SQL Server. Incluye los miembros siguientes: tsDataTimeVal (DBTIMESTAMP) bScale (BYTE) Especifica la escala para el valor de tsDataTimeVal. |
DateTimeOffsetVal |
DBTYPE_DBTIMESTAMPOFSET |
DBTIMESTAMPOFFSET |
VT_SS_DATETIMEOFFSET |
Admite el tipo de datos datetimeoffset de SQL Server. Incluye los miembros siguientes: tsoDateTimeOffsetVal (DBTIMESTAMPOFFSET) bScale (BYTE) Especifica la escala para el valor de tsoDateTimeOffsetVal. |
NCharVal |
No hay indicador de tipo OLE DB correspondiente. |
struct _NCharVal |
VT_SS_WVARSTRING, VT_SS_WSTRING |
Admite los tipos de datos nchar y nvarchar de SQL Server. Incluye los miembros siguientes: sActualLength (SHORT) Especifica la longitud real de la cadena a la que señala pwchNCharVal. No incluye cero de terminación. sMaxLength (SHORT) Especifica la longitud máxima de la cadena a la que señala pwchNCharVal. pwchNCharVal (WCHAR *) Puntero a la cadena. Miembros no usados: rgbReserved, dwReserved y pwchReserved. |
CharVal |
No hay indicador de tipo OLE DB correspondiente. |
struct _CharVal |
VT_SS_STRING, VT_SS_VARSTRING |
Admite los tipos de datos char y varchar de SQL Server. Incluye los miembros siguientes: sActualLength (SHORT) Especifica la longitud real de la cadena a la que señala pchCharVal. No incluye cero de terminación. sMaxLength (SHORT) Especifica la longitud máxima de la cadena a la que señala pchCharVal. pchCharVal (CHAR *) Puntero a la cadena. Miembros no usados: rgbReserved, dwReserved y pwchReserved. |
BinaryVal |
No hay indicador de tipo OLE DB correspondiente. |
struct _BinaryVal |
VT_SS_VARBINARY, VT_SS_BINARY |
Admite los tipos de datos binary y varbinary de SQL Server. Incluye los miembros siguientes: sActualLength (SHORT) Especifica la longitud real de los datos a los que señala prgbBinaryVal. sMaxLength (SHORT) Especifica la longitud máxima de los datos a los que señala prgbBinaryVal. prgbBinaryVal (BYTE *) Puntero a los datos binarios. Miembro no usado: dwReserved. |
UnknownType |
No se usa |
No se usa |
No se usa |
No se usa |
BLOBType |
No se usa |
No se usa |
No se usa |
No se usa |