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 | 不使用 | 不使用 | 不使用 | 不使用 |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈