Taille de colonne
La taille de colonne (ou paramètre) des types de données numériques est définie comme le nombre maximal de chiffres utilisés par le type de données de la colonne ou du paramètre, ou la précision des données. Pour les types de caractères, il s’agit de la longueur des caractères des données ; pour les types de données binaires, la taille de colonne est définie comme longueur en octets des données. Pour l’heure, l’horodatage et tous les types de données d’intervalle, il s’agit du nombre de caractères dans la représentation de caractères de ces données. La taille de colonne définie pour chaque type de données SQL concis est indiquée dans le tableau suivant.
Identificateur de type SQL | Taille de colonne |
---|---|
Tous les types de caractères[a],[b] | Taille de colonne définie ou maximale en caractères de la colonne ou du paramètre (comme contenu dans le champ de descripteur SQL_DESC_LENGTH). Par exemple, la taille de colonne d’une colonne de caractères à octet unique définie comme CHAR(10) est 10. |
SQL_DECIMAL SQL_NUMERIC | Nombre défini de chiffres. Par exemple, la précision d’une colonne définie comme NUMERIC(10,3) est de 10. |
SQL_BIT[c] | 1 |
SQL_TINYINT[c] | 3 |
SQL_SMALLINT[c] | 5 |
SQL_INTEGER[c] | 10 |
SQL_BIGINT[c] | 19 (s’il est signé) ou 20 (s’il n’est pas signé) |
SQL_REAL[c] | 7 |
SQL_FLOAT[c] | 15 |
SQL_DOUBLE[c] | 15 |
Tous les types binaires[a],[b] | Longueur définie ou maximale en octets de la colonne ou du paramètre. Par exemple, la longueur d’une colonne définie comme BINARY(10) est 10. |
SQL_TYPE_DATE[c] | 10 (nombre de caractères au format aaaa-mm-jj ). |
SQL_TYPE_TIME[c] | 8 (nombre de caractères au format hh-mm-ss ) ou 9 + s (nombre de caractères dans le format hh :mm :ss[.fff...], où s’agit de la précision des secondes). |
SQL_TYPE_TIMESTAMP | 16 (nombre de caractères au format aaaa-mm-jj hh :mm ) 19 (nombre de caractères au format aaaa-mm-jj hh :mm :ss ) or 20 + s (nombre de caractères au format aaaa-mm-dd hh :mm :ss[.fff...] où s’agit de la précision des secondes). |
SQL_INTERVAL_SECOND | Où p est la précision de début de l’intervalle et s est la précision des secondes, p (si s=0) ou p+s+1 (si s>0).[ d] |
SQL_INTERVAL_DAY_TO_SECOND | Où p est la précision de début d’intervalle et s est la précision des secondes, 9+p (si s=0) ou 10+p+s (si s>0).[ d] |
SQL_INTERVAL_HOUR_TO_SECOND | Où p est la précision de début de l’intervalle et s est la précision des secondes, 6+p (si s=0) ou 7+p+s (si s>0).[ d] |
SQL_INTERVAL_MINUTE_TO_SECOND | Où p est la précision de début de l’intervalle et s est la précision des secondes, 3+p (si s=0) ou 4+p+s (si s>0).[ d] |
SQL_INTERVAL_YEAR SQL_INTERVAL_MONTH SQL_INTERVAL_DAY SQL_INTERVAL_HOUR SQL_INTERVAL_MINUTE | p, où p est la précision de début d’intervalle.[ d] |
SQL_INTERVAL_YEAR_TO_MONTH SQL_INTERVAL_DAY_TO_HOUR | 3+p, où p est la précision de début de l’intervalle.[ d] |
SQL_INTERVAL_DAY_TO_MINUTE | 6+p, où p est la précision de début d’intervalle.[ d] |
SQL_INTERVAL_HOUR_TO_MINUTE | 3+p, où p est la précision de début de l’intervalle.[ d] |
SQL_GUID | 36 (nombre de caractères au format aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee) |
[a] Pour une application ODBC 1.0 appelant SQLSetParam dans un pilote ODBC 2.0 et pour une application ODBC 2.0 appelant SQLBindParameter dans un pilote ODBC 1.0, lorsque *StrLen_or_IndPtr est SQL_DATA_AT_EXEC pour un type SQL_LONGVARCHAR ou SQL_LONGVARBINARY, ColumnSize doit être défini sur la longueur totale des données à envoyer, pas la précision telle qu’elle est définie dans ce tableau.
[b] Si le pilote ne peut pas déterminer la longueur de colonne ou de paramètre d’un type de variable, elle retourne SQL_NO_TOTAL.
[c] L’argument ColumnSize de SQLBindParameter est ignoré pour ce type de données.
[d] Pour obtenir des règles générales sur la longueur des colonnes dans les types de données d’intervalle, consultez La longueur du type de données d’intervalle, plus haut dans cette annexe.
Les valeurs retournées pour la taille de colonne (ou de paramètre) ne correspondent pas aux valeurs d’un champ descripteur. Les valeurs peuvent provenir de l’SQL_DESC_PRECISION ou du champ SQL_DESC_LENGTH, en fonction du type de données, comme indiqué dans le tableau suivant.
Type SQL | Champ de descripteur correspondant à taille de colonne ou de paramètre |
---|---|
Tous les types de caractères et binaires | LENGTH |
Tous les types numériques | PRECISION |
Tous les types datetime et intervalle | LENGTH |
SQL_BIT | LENGTH |