SSVARIANT 구조
sqlncli.h에 정의되어 있는 SSVARIANT 구조는 SQL Server Native Client OLEDB 공급자의 DBTYPE_SQLVARIANT 값에 해당합니다.
SSVARIANT는 판별 구조체입니다. vt 멤버의 값에 따라 소비자는 읽을 멤버를 결정할 수 있습니다. vt 값은 SQL Server 데이터 형식에 해당하므로 SSVARIANT 구조는 모든 SQL Server 형식을 보유할 수 있습니다. 표준 OLE DB 유형의 데이터 구조에 대한 자세한 내용은 유형 표시기(Type Indicator)를 참조하십시오.
주의
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이 가리키는 문자열에 대한 실제 길이를 지정합니다. 이 값은 0으로 끝나지 않습니다. 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이 가리키는 문자열에 대한 실제 길이를 지정합니다. 이 값은 0으로 끝나지 않습니다. 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 |
UNUSED |
UNUSED |
UNUSED |
UNUSED |
BLOBType |
UNUSED |
UNUSED |
UNUSED |
UNUSED |