Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Thema wird beschrieben, in welcher Weise der sql_variant-Datentyp die erweiterte Datums- und Uhrzeitfunktionalität unterstützt.
Das Spaltenattribut SQL_CA_SS_VARIANT_TYPE wird zur Rückgabe des C-Typs einer Variant-Ergebnisspalte verwendet. SQL Server 2008 wurde zusätzlich das Attribut SQL_CA_SS_VARIANT_SQL_TYPE eingeführt, mit dem der SQL-Typ einer Variant-Ergebnisspalte im IRD festgelegt wird. SQL_CA_SS_VARIANT_SQL_TYPE kann auch im IPD zur Angabe des SQL-Typs eines SQL_SS_TIME2- oder SQL_SS_TIMESTAMPOFFSET-Parameters verwendet werden, der vom C-Typ SQL_C_BINARY ist und an den Typ SQL_SS_VARIANT gebunden wurde.
Die neuen Typen SQL_SS_TIME2 und SQL_SS_TIMESTAMPOFFSET können mit SQLColAttribute festgelegt werden. SQL_CA_SS_VARIANT_SQL_TYPE kann zurückgegeben werden von SQLGetDescField.
Für Ergebnisspalten konvertiert der Treiber Daten von Variant- zu Datum-/Uhrzeit-Typen. Weitere Informationen finden Sie unter Konvertierungen von SQL in C. Wenn Spalten an SQL_C_BINARY gebunden werden, muss die Pufferlänge so groß sein, dass der Puffer die dem SQL-Typ entsprechende Struktur aufnehmen kann.
Für die SQL_SS_TIME2- und SQL_SS_TIMESTAMPOFFSET-Parameter konvertiert der Treiber, wie in der nachfolgenden Tabelle beschrieben, C-Werte in sql_variant-Werte. Wenn ein Parameter als SQL_C_BINARY gebunden ist und der Servertyp SQL_SS_VARIANT lautet, dann wird er als Binärwert behandelt, sofern die Anwendung SQL_CA_SS_VARIANT_SQL_TYPE nicht auf einen anderen SQL-Typ festgelegt hat. In diesem Fall hat QL_CA_SS_VARIANT_SQL_TYPE Vorrang; d. h. wenn SQL_CA_SS_VARIANT_SQL_TYPE festgelegt wurde, wird damit das Standardverhalten überschrieben, wonach der SQL-Varianttyp vom C-Typ abgeleitet wird.
C-Typ |
Servertyp |
Anmerkungen |
|---|---|---|
SQL_C_CHAR |
varchar |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_WCHAR |
nvarcar |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_TINYINT |
smallint |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_STINYINT |
smallint |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_SHORT |
smallint |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_SSHORT |
smallint |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_USHORT |
int |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_LONG |
int |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_SLONG |
int |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_ULONG |
bigint |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_SBIGINT |
bigint |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_FLOAT |
real |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_DOUBLE |
float |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_BIT |
bit |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_UTINYINT |
tinyint |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_BINARY |
varbinary |
SQL_CA_SS_VARIANT_SQL_TYPE wird nicht festgelegt. |
SQL_C_BINARY |
time |
SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIME2 Scale wird auf SQL_DESC_PRECISION (den DecimalDigits-Parameter von SQLBindParameter) festgelegt. |
SQL_C_BINARY |
datetimeoffset |
SQL_CA_SS_VARIANT_SQL_TYPE = SQL_SS_TIMESTAMPOFFSET Scale wird auf SQL_DESC_PRECISION (den DecimalDigits-Parameter von SQLBindParameter) festgelegt. |
SQL_C_TYPE_DATE |
date |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_TYPE_TIME |
time(0) |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_TYPE_TIMESTAMP |
datetime2 |
Scale wird auf SQL_DESC_PRECISION (den DecimalDigits-Parameter von SQLBindParameter) festgelegt. |
SQL_C_NUMERIC |
decimal |
Precision wird auf SQL_DESC_PRECISION (den ColumnSize-Parameter von SQLBindParameter) festgelegt. Scale wird auf SQL_DESC_SCALE (den DecimalDigits-Parameter von SQLBindParameter) festgelegt. |
SQL_C_SS_TIME2 |
time |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |
SQL_C_SS_TIMESTAMPOFFSET |
datetimeoffset |
SQL_CA_SS_VARIANT_SQL_TYPE wird ignoriert. |