SSVARIANT 结构

SSVARIANT 结构在 sqlncli.h 中定义,它与 SQL Server Native Client OLEDB 访问接口中的 DBTYPE_SQLVARIANT 值相对应。

SSVARIANT 是一个分类化的联合。根据 vt 成员的值,使用者可以确定要读取的成员。vt 值与 SQL Server 数据类型相对应。因此,SSVARIANT 结构可以具有任何 SQL Server 类型。有关标准 OLE DB 类型的数据结构的详细信息,请参见 Type Indicators(类型指示器)

注释

如果 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 Native Client

sqlncli.h 文件包含变量访问宏,可以简化 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 C 数据类型

vt 值

注释

vt

SSVARTYPE

指定 SSVARIANT 结构中包含的值类型。

bTinyIntVal

DBTYPE_UI1

BYTE

VT_SS_UI1

支持 tinyintSQL Server 数据类型。

sShortIntVal

DBTYPE_I2

SHORT

VT_SS_I2

支持 smallintSQL Server 数据类型。

lIntVal

DBTYPE_I4

LONG

VT_SS_I4

支持 intSQL Server 数据类型。

llBigIntVal

DBTYPE_I8

LARGE_INTEGER

VT_SS_I8

支持 bigintSQL Server 数据类型。

fltRealVal

DBTYPE_R4

float

VT_SS_R4

支持 realSQL Server 数据类型。

dblFloatVal

DBTYPE_R8

double

VT_SS_R8

支持 floatSQL Server 数据类型。

cyMoneyVal

DBTYPE_CY

LARGE_INTEGER

VT_SS_MONEY VT_SS_SMALLMONEY 

支持 money 和 smallmoneySQL Server 数据类型。

fBitVal

DBTYPE_BOOL

VARIANT_BOOL

VT_SS_BIT

支持 bitSQL Server 数据类型。

rgbGuidVal

DBTYPE_GUID

GUID

VT_SS_GUID

支持 uniqueidentifierSQL Server 数据类型。

numNumericVal

DBTYPE_NUMERIC

DB_NUMERIC

VT_SS_NUMERIC

支持 numericSQL Server 数据类型。

dDateVal

DBTYPE_DATE

DBDATE

VT_SS_DATE

支持 dateSQL Server 数据类型。

tsDateTimeVal

DBTYPE_DBTIMESTAMP

DBTIMESTAMP

VT_SS_SMALLDATETIME VT_SS_DATETIME VT_SS_DATETIME2

支持 smalldatetime、datetime 和 datetime2SQL Server 数据类型。

Time2Val

DBTYPE_DBTIME2

DBTIME2

VT_SS_TIME2

支持 timeSQL Server 数据类型。

包括以下成员:

tTime2Val (DBTIME2)

bScale (BYTE) 指定 tTime2Val 值的刻度。

DateTimeVal

DBTYPE_DBTIMESTAMP

DBTIMESTAMP

VT_SS_DATETIME2

支持 datetime2SQL Server 数据类型。

包括以下成员:

tsDataTimeVal (DBTIMESTAMP)

bScale (BYTE) 指定 tsDataTimeVal 值的刻度。

DateTimeOffsetVal

DBTYPE_DBTIMESTAMPOFSET

DBTIMESTAMPOFFSET

VT_SS_DATETIMEOFFSET

支持 datetimeoffsetSQL Server 数据类型。

包括以下成员:

tsoDateTimeOffsetVal (DBTIMESTAMPOFFSET)

bScale (BYTE) 指定 tsoDateTimeOffsetVal 值的刻度。

NCharVal

没有对应的 OLE DB 类型指示器。

struct _NCharVal

VT_SS_WVARSTRING,

VT_SS_WSTRING

支持 nchar 和 nvarcharSQL Server 数据类型。

包括以下成员:

sActualLength (SHORT) 指定 pwchNCharVal 指向的字符串的实际长度。不包括尾零。

sMaxLength (SHORT) 指定 pwchNCharVal 指向的字符串的最大长度。

pwchNCharVal (WCHAR *) 指向字符串的指针。

不使用的成员:rgbReserved、dwReserved 和 pwchReserved。

CharVal

没有对应的 OLE DB 类型指示器。

struct _CharVal

VT_SS_STRING,

VT_SS_VARSTRING

支持 char 和 varcharSQL Server 数据类型。

包括以下成员:

sActualLength (SHORT) 指定 pchCharVal 指向的字符串的实际长度。不包括尾零。

sMaxLength (SHORT) 指定 pchCharVal 指向的字符串的最大长度。

pchCharVal (CHAR *) 指向字符串的指针。

不使用的成员:

rgbReserved、dwReserved 和 pwchReserved。

BinaryVal

没有对应的 OLE DB 类型指示器。

struct _BinaryVal

VT_SS_VARBINARY,

VT_SS_BINARY

支持 binary 和 varbinarySQL Server 数据类型。

包括以下成员:

sActualLength (SHORT) 指定 prgbBinaryVal 指向的数据的实际长度。

sMaxLength (SHORT) 指定 prgbBinaryVal 指向的数据的最大长度。

prgbBinaryVal (BYTE *) 指向二进制数据的指针。

不使用的成员:dwReserved。

UnknownType

不使用

不使用

不使用

不使用

BLOBType

不使用

不使用

不使用

不使用

请参阅

概念