Размер столбца
Размер столбца (или параметра) числовых типов данных определяется как максимальное количество цифр, используемых типом данных столбца или параметра, или точностью данных. Для типов символов это длина символов в символах данных; для типов двоичных данных размер столбца определяется как длина в байтах данных. Для времени, метки времени и всех типов данных интервала это число символов в символьном представлении этих данных. Размер столбца, определенный для каждого краткого типа данных SQL, показан в следующей таблице.
Идентификатор типа SQL | Размер столбца |
---|---|
Все типы символов[a],[b] | Определенный или максимальный размер столбца в символах столбца или параметра (как указано в поле дескриптора SQL_DESC_LENGTH). Например, размер столбца однобайтового столбца, определенного как CHAR(10), равен 10. |
SQL_DECIMAL SQL_NUMERIC | Определенное число цифр. Например, точность столбца, определенного как NUMERIC(10,3), равна 10. |
SQL_BIT[c] | 1 |
SQL_TINYINT[c] | 3 |
SQL_SMALLINT[c] | 5 |
SQL_INTEGER[c] | 10 |
SQL_BIGINT[c] | 19 (если подписан) или 20 (при отмене знака) |
SQL_REAL[c] | 7 |
SQL_FLOAT[c] | 15 |
SQL_DOUBLE[c] | 15 |
Все двоичные типы[a],[b] | Определенная или максимальная длина в байтах столбца или параметра. Например, длина столбца, определенного как BINARY(10), равна 10. |
SQL_TYPE_DATE[c] | 10 (число символов в формате гггг-мм-дд ). |
SQL_TYPE_TIME[c] | 8 (число символов в формате hh-mm-ss) или 9 +s (число символов в формате hh:mm:ss[.fff...], где точность секунд). |
SQL_TYPE_TIMESTAMP | 16 (количество символов в формате гггг-мм-дд чч:мм ) 19 (число символов в формате гггг-мм-дд чч:мм:сс ) or 20 + s (число символов в формате гггг-мм-дд чч:мм:сс[.fff...], где с точностью секунд). |
SQL_INTERVAL_SECOND | Где p является интервалом начальной точности и s является точность секунд, p (если s=0) или p++1 (если s>0).[ d] |
SQL_INTERVAL_DAY_TO_SECOND | Где p является интервалом начальной точности и s — точность секунд, 9+p (если s=0) или 10+p+(если s>0).[ d] |
SQL_INTERVAL_HOUR_TO_SECOND | Где p является интервалом начальной точности и s — точность секунд, 6+p (если s=0) или 7+p+(если s>0).[ d] |
SQL_INTERVAL_MINUTE_TO_SECOND | Где p является интервалом начальной точности и s — точность секунд, 3+p (если s=0) или 4+p+(если s>0).[ d] |
SQL_INTERVAL_YEAR SQL_INTERVAL_MONTH SQL_INTERVAL_DAY SQL_INTERVAL_HOUR SQL_INTERVAL_MINUTE | p, где p является интервалом начальной точности.[ d] |
SQL_INTERVAL_YEAR_TO_MONTH SQL_INTERVAL_DAY_TO_HOUR | 3+p, где p — это интервал начальной точности.[ d] |
SQL_INTERVAL_DAY_TO_MINUTE | 6+p, где p — это интервал начальной точности.[ d] |
SQL_INTERVAL_HOUR_TO_MINUTE | 3+p, где p — это интервал начальной точности.[ d] |
SQL_GUID | 36 (число символов в формате aaaa-bbbb-cccc-ddd-eeee) |
[a] Для приложения ODBC 1.0, вызывающего SQLSetParam в драйвере ODBC 2.0, а для приложения ODBC 2.0, вызывающего SQLBindParameter в драйвере ODBC 1.0, если *StrLen_or_IndPtr SQL_DATA_AT_EXEC для типа SQL_LONGVARCHAR или SQL_LONGVARBINARY типа, ColumnSize необходимо задать общую длину отправленных данных, не точность, как определено в этой таблице.
[b] Если драйвер не может определить длину столбца или параметра для типа переменной, он возвращает SQL_NO_TOTAL.
[c] Аргумент ColumnSize SQLBindParameter игнорируется для этого типа данных.
[d] Общие правила о длине столбца в типах данных интервала см . в разделе "Длина типа данных интервала" ранее в этом приложении.
Значения, возвращаемые для размера столбца (или параметра), не соответствуют значениям в одном поле дескриптора. Значения могут поступать из поля SQL_DESC_PRECISION или поля SQL_DESC_LENGTH в зависимости от типа данных, как показано в следующей таблице.
Тип SQL | Поле дескриптора, соответствующее Размер столбца или параметра |
---|---|
Все типы символов и двоичных типов | LENGTH |
Все числовые типы | PRECISION |
Все типы даты и интервала | LENGTH |
SQL_BIT | LENGTH |