SQL Server Native Client 中的 SSVARIANT 結構
適用於:SQL ServerAzure SQL DatabaseAzure 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 結構的成員:
member | 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 與 varchar SQL Server 資料類型。 包括下列成員: sActualLength (SHORT) 指定 pchCharVal 指向之字串的實際長度。 不包括結尾的零。 sMaxLength (SHORT) 指定 pchCharVal 指向之字串的最大長度。 pchCharVal (CHAR *) 指向字串的指標。 未使用的成員: rgbReserved 、 dwReserved 和 pwchReserved 。 |
BinaryVal | 沒有對應的 OLE DB 類型指標。 | struct _BinaryVal | VT_SS_VARBINARY, VT_SS_BINARY |
支援 binary 與 varbinary SQL Server 資料類型。 包括下列成員: sActualLength (SHORT) 指定 prgbBinaryVal 指向之資料的實際長度。 sMaxLength (SHORT) 指定 prgbBinaryVal 指向之資料的最大長度。 prgbBinaryVal (BYTE *) 指向二進位資料的指標。 未使用的成員:dwReserved。 |
UnknownType | 未使用 | 未使用 | 未使用 | 未使用 |
BLOBType | 未使用 | 未使用 | 未使用 | 未使用 |
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應