Структура SSVARIANT
Структура SSVARIANT, определяемая в файле sqlncli.h, соответствует значению DBTYPE_SQLVARIANT в поставщике OLEDB для собственного клиента SQL Server.
SSVARIANT представляет собой избирательное соединение. В зависимости от значения элемента vt, объект-получатель может определить, какой элемент следует считывать. Значения vt соответствуют типам данных SQL Server. Таким образом, структура SSVARIANT может содержать любой тип SQL Server. Дополнительные сведения о структуре данных для стандартных типов OLE DB см. в разделе Индикаторы типов.
Замечания
Если DataTypeCompat==80, несколько подтипов SSVARIANT становятся строками. Например, следующие значения vt будут представлены в SSVARIANT в виде VT_SS_WVARSTRING:
VT_SS_DATETIMEOFFSET
VT_SS_DATETIME2
VT_SS_TIME2
VT_SS_DATE
Если DateTypeCompat == 0, то эти типы будут представлены в собственном формате.
Дополнительные сведения о SSPROP_INIT_DATATYPECOMPATIBILITY см. в разделе Использование ключевых слов строки подключения с собственным клиентом SQL Server.
Файл sqlncli.h содержит макросы для доступа к значениям variant, которые упрощают разыменование типов, входящих в структуру SSVARIANT. В качестве примера можно рассмотреть макрос V_SS_DATETIMEOFFSET, который можно использовать следующим образом:
memcpy(&V_SS_DATETIMEOFFSET(pssVar).tsoDateTimeOffsetVal, pDTO, cbNative);
V_SS_DATETIMEOFFSET(pssVar).bScale = bScale;
Полный набор макросов доступа для каждого элемента структуры SSVARIANT см. в файле sqlncli.hi.
Следующая таблица описывает элементы структуры SSVARIANT.
Член |
Индикатор типа OLE DB |
Тип данных OLE DB |
Значение vt |
Комментарии |
---|---|---|---|---|
vt |
SSVARTYPE |
Указывает тип значения, которое содержится в структуре SSVARIANT. |
||
bTinyIntVal |
DBTYPE_UI1 |
BYTE |
VT_SS_UI1 |
Поддерживает тип данных SQL Server tinyint. |
sShortIntVal |
DBTYPE_I2 |
SHORT |
VT_SS_I2 |
Поддерживает тип данных SQL Server smallint. |
lIntVal |
DBTYPE_I4 |
LONG |
VT_SS_I4 |
Поддерживает тип данных SQL Server int. |
llBigIntVal |
DBTYPE_I8 |
LARGE_INTEGER |
VT_SS_I8 |
Поддерживает тип данных SQL Server bigint. |
fltRealVal |
DBTYPE_R4 |
float |
VT_SS_R4 |
Поддерживает тип данных SQL Server real. |
dblFloatVal |
DBTYPE_R8 |
double |
VT_SS_R8 |
Поддерживает тип данных SQL Server float. |
cyMoneyVal |
DBTYPE_CY |
LARGE_INTEGER |
VT_SS_MONEY VT_SS_SMALLMONEY |
Поддерживает типы данных SQL Server money и smallmoney. |
fBitVal |
DBTYPE_BOOL |
VARIANT_BOOL |
VT_SS_BIT |
Поддерживает тип данных SQL Server bit. |
rgbGuidVal |
DBTYPE_GUID |
GUID |
VT_SS_GUID |
Поддерживает тип данных SQL Server uniqueidentifier. |
numNumericVal |
DBTYPE_NUMERIC |
DB_NUMERIC |
VT_SS_NUMERIC |
Поддерживает тип данных SQL Server numeric. |
dDateVal |
DBTYPE_DATE |
DBDATE |
VT_SS_DATE |
Поддерживает тип данных SQL Server date. |
tsDateTimeVal |
DBTYPE_DBTIMESTAMP |
DBTIMESTAMP |
VT_SS_SMALLDATETIME VT_SS_DATETIME VT_SS_DATETIME2 |
Поддерживает типы данных SQL Server smalldatetime, datetime и datetime2. |
Time2Val |
DBTYPE_DBTIME2 |
DBTIME2 |
VT_SS_TIME2 |
Поддерживает тип данных SQL Server time. Содержит следующие элементы: tTime2Val (DBTIME2) bScale (BYTE) Задает масштаб для значения tTime2Val. |
DateTimeVal |
DBTYPE_DBTIMESTAMP |
DBTIMESTAMP |
VT_SS_DATETIME2 |
Поддерживает тип данных SQL Server datetime2. Содержит следующие элементы: tsDataTimeVal (DBTIMESTAMP) bScale (BYTE) Задает масштаб для значения tsDataTimeVal. |
DateTimeOffsetVal |
DBTYPE_DBTIMESTAMPOFSET |
DBTIMESTAMPOFFSET |
VT_SS_DATETIMEOFFSET |
Поддерживает тип данных SQL Server datetimeoffset. Содержит следующие элементы: tsoDateTimeOffsetVal (DBTIMESTAMPOFFSET) bScale (BYTE) Задает масштаб для значения tsoDateTimeOffsetVal. |
NCharVal |
Отсутствует соответствующий индикатор типа OLE DB. |
struct _NCharVal |
VT_SS_WVARSTRING, VT_SS_WSTRING |
Поддерживает типы данных SQL Server nchar и nvarchar. Содержит следующие элементы: sActualLength (SHORT) Указывает фактическую длину строки, на которую указывает параметр pwchNCharVal. Не содержит завершающего нуля. sMaxLength (SHORT) Указывает максимальную длину строки, на которую указывает pwchNCharVal. pwchNCharVal (WCHAR *) Указатель на строку. Неиспользуемые элементы: rgbReserved, dwReserved и pwchReserved. |
CharVal |
Отсутствует соответствующий индикатор типа OLE DB. |
struct _CharVal |
VT_SS_STRING, VT_SS_VARSTRING |
Поддерживает типы данных SQL Server char и varchar. Содержит следующие элементы: sActualLength (SHORT) Указывает фактическую длину строки, на которую указывает pchCharVal. Не содержит завершающего нуля. sMaxLength (SHORT) Указывает максимальную длину строки, на которую указывает pchCharVal. pchCharVal (CHAR *) Указатель на строку. Неиспользуемые элементы: rgbReserved, dwReserved и pwchReserved. |
BinaryVal |
Отсутствует соответствующий индикатор типа OLE DB. |
struct _BinaryVal |
VT_SS_VARBINARY, VT_SS_BINARY |
Поддерживает типы данных SQL Server binary и varbinary. Содержит следующие элементы: sActualLength (SHORT) Указывает фактическую длину строки, на которую указывает параметр prgbBinaryVal. sMaxLength (SHORT) Указывает максимальную длину строки, на которую указывает параметр prgbBinaryVal. prgbBinaryVal (BYTE *) Указатель на двоичные данные. Неиспользуемый элемент: dwReserved. |
UnknownType |
НЕ ИСПОЛЬЗУЕТСЯ |
НЕ ИСПОЛЬЗУЕТСЯ |
НЕ ИСПОЛЬЗУЕТСЯ |
НЕ ИСПОЛЬЗУЕТСЯ |
BLOBType |
НЕ ИСПОЛЬЗУЕТСЯ |
НЕ ИСПОЛЬЗУЕТСЯ |
НЕ ИСПОЛЬЗУЕТСЯ |
НЕ ИСПОЛЬЗУЕТСЯ |