SQL Server Native Client 中的 SSVARIANT 结构

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例Azure Synapse AnalyticsAnalytics Platform System (PDW)

在 sqlncli.h 中定义的 SSVARIANT 结构对应于SQL Server Native Client OLEDB 提供程序中的DBTYPE_SQLVARIANT值。

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 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 支持 tinyint SQL Server 数据类型。
sShortIntVal DBTYPE_I2 SHORT VT_SS_I2 支持 smallint SQL Server 数据类型。
lIntVal DBTYPE_I4 LONG VT_SS_I4 支持 int SQL Server 数据类型。
llBigIntVal DBTYPE_I8 LARGE_INTEGER VT_SS_I8 支持 bigint SQL Server 数据类型。
fltRealVal DBTYPE_R4 float VT_SS_R4 支持 real SQL Server 数据类型。
dblFloatVal DBTYPE_R8 double VT_SS_R8 支持 float SQL Server 数据类型。
cyMoneyVal DBTYPE_CY LARGE_INTEGER VT_SS_MONEY VT_SS_SMALLMONEY 支持 money 和 smallmoney SQL Server 数据类型。
fBitVal DBTYPE_BOOL VARIANT_BOOL VT_SS_BIT 支持 bit SQL Server 数据类型。
rgbGuidVal DBTYPE_GUID GUID VT_SS_GUID 支持 uniqueidentifier SQL Server 数据类型。
numNumericVal DBTYPE_NUMERIC DB_NUMERIC VT_SS_NUMERIC 支持 numeric SQL Server 数据类型。
dDateVal DBTYPE_DATE DBDATE VT_SS_DATE 支持 date 数据类型SQL Server。
tsDateTimeVal DBTYPE_DBTIMESTAMP DBTIMESTAMP VT_SS_SMALLDATETIME VT_SS_DATETIME VT_SS_DATETIME2 支持 smalldatetime 、datetime 和 datetime2 SQL Server 数据类型。
Time2Val DBTYPE_DBTIME2 DBTIME2 VT_SS_TIME2 支持 time SQL Server 数据类型。

包括以下成员:

tTime2Val (DBTIME2 )

bScale (BYTE ) 指定 tTime2Val 值的小数位数。
DateTimeVal DBTYPE_DBTIMESTAMP DBTIMESTAMP VT_SS_DATETIME2 支持 datetime2 SQL Server 数据类型。

包括以下成员:

tsDataTimeVal (DBTIMESTAMP)

bScale (BYTE ) 指定 tsDataTimeVal 值的小数位数。
DateTimeOffsetVal DBTYPE_DBTIMESTAMPOFSET DBTIMESTAMPOFFSET VT_SS_DATETIMEOFFSET 支持 datetimeoffset SQL Server 数据类型。

包括以下成员:

tsoDateTimeOffsetVal (DBTIMESTAMPOFFSET )

bScale (BYTE ) 指定 tsoDateTimeOffsetVal 值的小数位数。
NCharVal 没有对应的 OLE DB 类型指示器。 struct _NCharVal VT_SS_WVARSTRING、

VT_SS_WSTRING
支持 nchar 和 nvarchar SQL 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 不使用 不使用 不使用 不使用

另请参阅

数据类型 (OLE DB)