Estructura SSVARIANT en SQL Server Native Client

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

La estructura SSVARIANT, que se define en sqlncli.h, corresponde a un valor de DBTYPE_SQLVARIANT en el proveedor OLEDB de SQL Server Native Client.

SSVARIANT es una unión de discriminación. Según el valor del miembro vt, el consumidor puede determinar qué miembro tiene que leerse. Los valores de vt se corresponden con tipos de datos de SQL Server. Por tanto, la estructura SSVARIANT puede contener cualquier tipo de SQL Server. Para más información sobre la estructura de datos de los tipos de OLE DB estándar, consulte Indicadores de tipo.

Observaciones

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 sobre SSPROP_INIT_DATATYPECOMPATIBILITY, consulte Uso de palabras clave de cadena de conexión con SQL Server Native Client.

El archivo sqlncli.h contiene macros de acceso variant que simplifican la desreferenciación de los tipos de miembro en 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 tabla siguiente, se describen los miembros de la estructura SSVARIANT:

Member 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 tinyintSQL Server.
sShortIntVal DBTYPE_I2 SHORT VT_SS_I2 Admite el tipo de datos smallintSQL Server.
lIntVal DBTYPE_I4 LONG VT_SS_I4 Admite el tipo de datos intSQL Server.
llBigIntVal DBTYPE_I8 LARGE_INTEGER VT_SS_I8 Admite el tipo de datos bigintSQL Server.
fltRealVal DBTYPE_R4 float VT_SS_R4 Admite el tipo de datos realSQL Server.
dblFloatVal DBTYPE_R8 double VT_SS_R8 Admite el tipo de datos floatSQL Server.
cyMoneyVal DBTYPE_CY LARGE_INTEGER VT_SS_MONEY VT_SS_SMALLMONEY Admite los tipos de datos money y smallmoneySQL Server.
fBitVal DBTYPE_BOOL VARIANT_BOOL VT_SS_BIT Admite el tipo de datos bitSQL Server.
rgbGuidVal DBTYPE_GUID GUID VT_SS_GUID Admite el tipo de datos uniqueidentifierSQL Server.
numNumericVal DBTYPE_NUMERIC DB_NUMERIC VT_SS_NUMERIC Admite el tipo de datos numericSQL Server.
dDateVal DBTYPE_DATE DBDATE VT_SS_DATE Admite el tipo de datos dateSQL Server.
tsDateTimeVal DBTYPE_DBTIMESTAMP DBTIMESTAMP VT_SS_SMALLDATETIME VT_SS_DATETIME VT_SS_DATETIME2 Admite los tipos de datos smalldatetime, datetime y datetime2SQL Server.
Time2Val DBTYPE_DBTIME2 DBTIME2 VT_SS_TIME2 Admite el tipo de datos timeSQL Server.

Incluye los miembros siguientes:

tTime2Val (DBTIME2)

bScale (BYTE) Especifica la escala del valor tTime2Val.
DateTimeVal DBTYPE_DBTIMESTAMP DBTIMESTAMP VT_SS_DATETIME2 Admite el tipo de datos datetime2SQL Server.

Incluye los miembros siguientes:

tsDataTimeVal (DBTIMESTAMP)

bScale (BYTE) Especifica la escala del valor tsDataTimeVal.
DateTimeOffsetVal DBTYPE_DBTIMESTAMPOFSET DBTIMESTAMPOFFSET VT_SS_DATETIMEOFFSET Admite el tipo de datos datetimeoffsetSQL Server.

Incluye los miembros siguientes:

tsoDateTimeOffsetVal (DBTIMESTAMPOFFSET)

bScale (BYTE) Especifica la escala del valor 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 nvarcharSQL Server.

Incluye los miembros siguientes:

sActualLength (SHORT) especifica la longitud real de la cadena a la que apunta pwchNCharVal. No incluye cero de terminación.

sMaxLength (SHORT) especifica la longitud máxima de la cadena a la que apunta pwchNCharVal.

pwchNCharVal (WCHAR *) Puntero a la cadena.

Miembros no usados: rgbReserved, dwReservedy 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 varcharSQL Server.

Incluye los miembros siguientes:

sActualLength (SHORT) especifica la longitud real de la cadena a la que apunta pchCharVal. No incluye cero de terminación.

sMaxLength (SHORT) especifica la longitud máxima de la cadena a la que apunta 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 varbinarySQL Server.

Incluye los miembros siguientes:

sActualLength (SHORT) especifica la longitud real de los datos a los que apunta prgbBinaryVal.

sMaxLength (SHORT) especifica la longitud máxima de los datos a los que apunta prgbBinaryVal.

prgbBinaryVal (BYTE *) Puntero a los datos binarios.

Miembro no usado: dwReserved.
TipoDesconocido 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

Consulte también

Tipos de datos (OLE DB)