C zu SQL: numerisch
Die Bezeichner für die numerischen ODBC C-Datentypen sind:
SQL_C_STINYINT
SQL_C_SLONG
SQL_C_UTINYINT
SQL_C_ULONG
SQL_C_TINYINT
SQL_C_LONG
SQL_C_SSHORT
SQL_C_FLOAT
SQL_C_USHORT
SQL_C_DOUBLE
SQL_C_SHORT
SQL_C_NUMERIC
SQL_C_SBIGINT
SQL_C_UBIGINT
Die folgende Tabelle zeigt die ODBC SQL-Datentypen, in die numerische C-Daten konvertiert werden können. Eine Erläuterung der Spalten und Begriffe in der Tabelle finden Sie unter Konvertieren von Daten aus C in SQL-Datentypen.
SQL-Typbezeichner | Test | SQLSTATE |
---|---|---|
SQL_CHAR SQL_VARCHAR SQL_LONGVARCHAR |
Anzahl der Ziffern <= Spaltenbytelänge Anzahl der Ziffern > Spaltenbytelänge |
– 22001 |
SQL_WCHAR SQL_WVARCHAR SQL_WLONGVARCHAR |
Anzahl von Zeichen <= Spaltenzeichenlänge Anzahl der Zeichen > Spaltenzeichenlänge |
– 22001 |
SQL_DECIMAL[b] SQL_NUMERIC[b] SQL_TINYINT[b] SQL_SMALLINT[b] SQL_INTEGER[b] SQL_BIGINT[b] |
Konvertierte Daten ohne Abschneiden oder mit abgeschnittenen Bruchstellen Konvertierte Daten mit Abschneiden ganzer Ziffern |
– 22003 |
SQL_REAL SQL_FLOAT SQL_DOUBLE |
Daten liegen innerhalb des Bereichs des Datentyps, in den die Zahl konvertiert wird. Daten liegen außerhalb des Bereichs des Datentyps, in den die Zahl konvertiert wird. |
– 22003 |
SQL_BIT | Daten sind 0 oder 1 Daten sind größer als 0, kleiner als 2 und nicht gleich 1 Daten sind kleiner als 0 oder größer als oder gleich 2 |
– 22001 22003 |
SQL_INTERVAL_YEAR[a] SQL_INTERVAL_MONTH[a] SQL_INTERVAL_DAY[a] SQL_INTERVAL_HOUR[a] SQL_INTERVAL_MINUTE[a] SQL_INTERVAL_SECOND[a] |
Daten werden nicht abgeschnitten. Daten abgeschnitten. |
– 22015 |
[a] Diese Konvertierungen werden nur für die genauen numerischen Datentypen (SQL_C_STINYINT, SQL_C_UTINYINT, SQL_C_SSHORT, SQL_C_USHORT, SQL_C_SLONG, SQL_C_ULONG oder SQL_C_NUMERIC) unterstützt. Sie werden für die ungefähren numerischen Datentypen (SQL_C_FLOAT oder SQL_C_DOUBLE) nicht unterstützt. Exakte numerische C-Datentypen können nicht in einen Intervall-SQL-Typ konvertiert werden, dessen Intervallgenauigkeit kein einzelnes Feld ist.
[b] Für den "n/a"-Fall kann ein Treiber optional SQL_SUCCESS_WITH_INFO und 01S07 zurückgeben, wenn eine Bruchabkürzung vorliegt.
Der Treiber ignoriert den Längen-/Indikatorwert beim Konvertieren von Daten aus den numerischen C-Datentypen und geht davon aus, dass die Größe des Datenpuffers der Größe des numerischen C-Datentyps entspricht. Der Längen-/Indikatorwert wird im StrLen_or_Ind-Argument in SQLPutData und im Puffer übergeben, der mit dem Argument StrLen_or_IndPtr in SQLBindParameter angegeben ist. Der Datenpuffer wird mit dem DataPtr-Argument in SQLPutData und dem ParameterValuePtr-Argument in SQLBindParameter angegeben.