Dimensioni della colonna

La dimensione della colonna (o del parametro) dei tipi di dati numerici è definita come il numero massimo di cifre usate dal tipo di dati della colonna o del parametro o della precisione dei dati. Per i tipi di caratteri, si tratta della lunghezza in caratteri dei dati; per i tipi di dati binari, le dimensioni delle colonne sono definite come la lunghezza in byte dei dati. Per i tipi di dati time, timestamp e tutti gli intervalli, si tratta del numero di caratteri nella rappresentazione di caratteri di questi dati. La dimensione della colonna definita per ogni tipo di dati SQL conciso è illustrata nella tabella seguente.

Identificatore del tipo SQL Dimensioni colonna
Tutti i tipi di caratteri[a],[b] Dimensione della colonna definita o massima in caratteri della colonna o del parametro (come contenuto nel campo del descrittore SQL_DESC_LENGTH). Ad esempio, la dimensione della colonna di una colonna di caratteri a byte singolo definita come CHAR(10) è 10.
SQL_DECIMAL SQL_NUMERIC Numero definito di cifre. Ad esempio, la precisione di una colonna definita come NUMERIC(10,3) è 10.
SQL_BIT[c] 1
SQL_TINYINT[c] 3
SQL_SMALLINT[c] 5
SQL_INTEGER[c] 10
SQL_BIGINT[c] 19 (se firmato) o 20 (se non firmato)
SQL_REAL[c] 7
SQL_FLOAT[c] 15
SQL_DOUBLE[c] 15
Tutti i tipi binari[a],[b] Lunghezza definita o massima in byte della colonna o del parametro. Ad esempio, la lunghezza di una colonna definita come BINARY(10) è 10.
SQL_TYPE_DATE[c] 10 (numero di caratteri nel formato aaaa-mm-gg ).
SQL_TYPE_TIME[c] 8 (il numero di caratteri nel formato hh-mm-ss ) o 9 + s (il numero di caratteri nel formato hh:mm:ss[.fff...] , dove s è la precisione dei secondi).
SQL_TYPE_TIMESTAMP 16 (il numero di caratteri nel formato a-mm-gg hh:mm )

19 (il numero di caratteri nel formato aa-mm-gg hh:mm:ss )

or

20 + s (il numero di caratteri nel formato aaaa-mm-gg hh:mm:ss[.fff...] , dove s è la precisione dei secondi).
SQL_INTERVAL_SECOND Dove p è la precisione iniziale dell'intervallo e s è la precisione dei secondi, p (se s=0) o p+s+1 (se s>0).[ d]
SQL_INTERVAL_DAY_TO_SECOND Dove p è la precisione iniziale dell'intervallo e s è la precisione dei secondi, 9+p (se s=0) o 10+p+s (se s>0).[ d]
SQL_INTERVAL_HOUR_TO_SECOND Dove p è la precisione iniziale dell'intervallo e s è la precisione dei secondi, 6+p (se s=0) o 7+p+s (se s>0).[ d]
SQL_INTERVAL_MINUTE_TO_SECOND Dove p è la precisione iniziale dell'intervallo e s è la precisione dei secondi, 3+p (se s=0) o 4+p+s (se s>0).[ d]
SQL_INTERVAL_YEAR SQL_INTERVAL_MONTH SQL_INTERVAL_DAY SQL_INTERVAL_HOUR SQL_INTERVAL_MINUTE p, dove p è la precisione iniziale dell'intervallo.[ d]
SQL_INTERVAL_YEAR_TO_MONTH SQL_INTERVAL_DAY_TO_HOUR 3+p, dove p è la precisione iniziale dell'intervallo.[ d]
SQL_INTERVAL_DAY_TO_MINUTE 6+p, dove p è la precisione iniziale dell'intervallo.[ d]
SQL_INTERVAL_HOUR_TO_MINUTE 3+p, dove p è la precisione iniziale dell'intervallo.[ d]
SQL_GUID 36 (numero di caratteri nel formato aaaa-bbbb-cccc-dddd-eeeee)

[a] Per un'applicazione ODBC 1.0 che chiama SQLSetParam in un driver ODBC 2.0 e per un'applicazione ODBC 2.0 che chiama SQLBindParameter in un driver ODBC 1.0, quando *StrLen_or_IndPtr è SQL_DATA_AT_EXEC per un tipo SQL_LONGVARCHAR o SQL_LONGVARBINARY, ColumnSize deve essere impostato sulla lunghezza totale dei dati da inviare, non la precisione definita in questa tabella.

[b] Se il driver non è in grado di determinare la lunghezza della colonna o del parametro per un tipo variabile, restituisce SQL_NO_TOTAL.

[c] L'argomento ColumnSize di SQLBindParameter viene ignorato per questo tipo di dati.

[d] Per le regole generali sulla lunghezza delle colonne nei tipi di dati intervallo, vedere Intervallo lunghezza del tipo di dati, più indietro in questa appendice.

I valori restituiti per la dimensione della colonna (o del parametro) non corrispondono ai valori in un campo descrittore. I valori possono provenire dal SQL_DESC_PRECISION o dal campo SQL_DESC_LENGTH, a seconda del tipo di dati, come illustrato nella tabella seguente.

Tipo SQL Campo descrittore corrispondente a

dimensione colonna o parametro
Tutti i tipi di caratteri e binari LENGTH
Tutti i tipi numerici PRECISION
Tutti i tipi datetime e interval LENGTH
SQL_BIT LENGTH