SSVARIANT 構造体
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 |
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 が参照している文字列の実際の長さを指定します。 末尾の 0 は含まれません。 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 が参照している文字列の実際の長さを指定します。 末尾の 0 は含まれません。 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 |
未使用 |
未使用 |
未使用 |
未使用 |