Teilen über


Spaltengröße

Die Spaltengröße (oder der Parameter) von numerischen Datentypen wird als maximale Anzahl von Ziffern definiert, die vom Datentyp der Spalte oder des Parameters oder der Genauigkeit der Daten verwendet werden. Bei Zeichentypen ist dies die Länge in Zeichen der Daten; bei binären Datentypen wird die Spaltengröße als Länge in Byte der Daten definiert. Für die Zeit, den Zeitstempel und alle Intervalldatentypen ist dies die Anzahl der Zeichen in der Zeichendarstellung dieser Daten. Die für jeden präzisen SQL-Datentyp definierte Spaltengröße wird in der folgenden Tabelle angezeigt.

SQL-Typbezeichner Spaltengröße
Alle Zeichentypen[a],[b] Die definierte oder maximale Spaltengröße in Zeichen der Spalte oder des Parameters (wie im Feld SQL_DESC_LENGTH Deskriptor enthalten). Die Spaltengröße einer als CHAR(10) definierten Ein-Byte-Zeichenspalte ist z. B. 10.
SQL_DECIMAL SQL_NUMERIC Die definierte Anzahl von Ziffern. Beispielsweise ist die Genauigkeit einer Spalte, die als NUMERIC(10,3) definiert ist, 10.
SQL_BIT[c] 1
SQL_TINYINT[c] 3
SQL_SMALLINT[c] 5
SQL_INTEGER[c] 10
SQL_BIGINT[c] 19 (wenn signiert) oder 20 (wenn nicht signiert)
SQL_REAL[c] 7
SQL_FLOAT[c] 15
SQL_DOUBLE[c] 15
Alle Binärtypen[a],[b] Die definierte oder maximale Länge in Bytes der Spalte oder des Parameters. Beispielsweise ist die Länge einer Spalte, die als BINARY(10) definiert ist, 10.
SQL_TYPE_DATE[c] 10 (die Anzahl der Zeichen im Format jjjj-mm-tt ).
SQL_TYPE_TIME[c] 8 (die Anzahl der Zeichen im hh-mm-ss-Format ) oder 9 + s (die Anzahl der Zeichen im hh:mm:ss[.fff...]-Format, wobei s die Sekundengenauigkeit ist).
SQL_TYPE_TIMESTAMP 16 (die Anzahl der Zeichen im Format jjjj-mm-tt hh:mm )

19 (die Anzahl der Zeichen im Format jjjj-mm-tt hh:mm:ss )

oder

20 + s (die Anzahl der Zeichen im yyyy-mm-tt hh:mm:ss[.fff...] Format, wobei s die Sekundengenauigkeit ist).
SQL_INTERVAL_SECOND Dabei ist p die genauigkeitsführende Intervall und s die Sekundengenauigkeit, p (wenn s=0) oder p+s+1 (wenn s>0).[ d]
SQL_INTERVAL_DAY_TO_SECOND Ist p die Intervallpräzision und s die Sekundengenauigkeit, 9+p (wenn s=0) oder 10+p+s (wenn s>0).[ d]
SQL_INTERVAL_HOUR_TO_SECOND Dabei ist p die Intervallpräzision und s die Sekundengenauigkeit, 6+p (wenn s=0) oder 7+p+s (wenn s>0).[ d]
SQL_INTERVAL_MINUTE_TO_SECOND Dabei ist p die Intervallpräzision und s die Sekundengenauigkeit, 3+p (wenn s=0) oder 4+p+s (wenn s>0).[ d]
SQL_INTERVAL_YEAR SQL_INTERVAL_MONTH SQL_INTERVAL_DAY SQL_INTERVAL_HOUR SQL_INTERVAL_MINUTE p, wobei p das Intervall ist, das die führende Genauigkeit des Intervalls ist.[ d]
SQL_INTERVAL_YEAR_TO_MONTH SQL_INTERVAL_DAY_TO_HOUR 3+p, wobei p die Intervallp führende Genauigkeit ist.[ d]
SQL_INTERVAL_DAY_TO_MINUTE 6+p, wobei p die Intervallp-führende Genauigkeit ist.[ d]
SQL_INTERVAL_HOUR_TO_MINUTE 3+p, wobei p die Intervallp führende Genauigkeit ist.[ d]
SQL_GUID 36 (die Anzahl der Zeichen im Format aaaaaa-bbbb-cccc-dddd-eeee)

[a] Für eine ODBC 1.0-Anwendung, die SQLSetParam in einem ODBC 2.0-Treiber aufruft, und für eine ODBC 2.0-Anwendung, die SQLBindParameter in einem ODBC 1.0-Treiber aufruft, muss ColumnSize auf die Gesamtlänge der zu sendenden Daten festgelegt werden, wenn *StrLen_or_IndPtr für einen SQL_LONGVARCHAR- oder SQL_LONGVARBINARY-Typ SQL_DATA_AT_EXEC ist. nicht die Genauigkeit, die in dieser Tabelle definiert ist.

[b] Wenn der Treiber die Spalten- oder Parameterlänge für einen Variablentyp nicht bestimmen kann, wird SQL_NO_TOTAL zurückgegeben.

[c] Das ColumnSize-Argument von SQLBindParameter wird für diesen Datentyp ignoriert.

[d] Allgemeine Regeln zur Spaltenlänge in Intervalldatentypen finden Sie weiter oben in diesem Anhang unter "Intervalldatentyplänge".

Die für die Spaltengröße (oder den Parameter) zurückgegebenen Werte entsprechen nicht den Werten in einem Einzelnen Deskriptorfeld. Die Werte können entweder aus dem SQL_DESC_PRECISION- oder dem feld SQL_DESC_LENGTH stammen, je nach Datentyp, wie in der folgenden Tabelle dargestellt.

SQL-Typ Deskriptorfeld entsprechend

Spalten- oder Parametergröße
Alle Zeichen- und Binärtypen LENGTH
Alle numerischen Typen PRECISION
Alle Datums- und Intervalltypen LENGTH
SQL_BIT LENGTH