Информация в следующей таблице дополняет информацию, включенную в главу 7, "Stored Procedures", в главу 15, "Writing User-Defined Functions and Methods" и в главу 20, "Programming in C and C++". В этой таблице перечислены поддерживаемые отображения между типами данных SQL и типами данных C для хранимых процедур, пользовательских функций и методов.
Табл. 11. Типы данных SQL, соответствующие объявлениям C/C++
Тип столбца SQL | Тип данных C/C++ | Описание типа столбца SQL | ||
---|---|---|---|---|
SMALLINT (500 или 501) | sqlint16 | 16-битное целое со знаком | ||
INTEGER (496 или 497) | sqlint32 | 32-битное целое со знаком | ||
BIGINT (492 или 493) | sqlint64 | 64-битное целое со знаком | ||
REAL (480 или 481) | float | Число с плавающей точкой, одинарной точности | ||
DOUBLE (480 или 481) | double | Число с плавающей точкой, двойной точности | ||
DECIMAL(p, s) (484 или 485) | Не поддерживается. |
Чтобы передать значение типа DECIMAL, задайте для этого параметра тип
данных, в который может быть преобразован тип DECIMAL (например, CHAR или
DOUBLE), и явно преобразуйте аргумент в этот тип данных.
| ||
CHAR(n) (452 или 453) | char[n+1] где n достаточно велико, чтобы
вместить данные
1<=n<=254 | Символьная строка фиксированной длины с пустым символом-ограничителем | ||
CHAR(n) FOR BIT DATA (452 или 453) | char[n+1] где n достаточно велико, чтобы
вместить данные
1<=n<=254 | Символьная строка фиксированной длины | ||
VARCHAR(n) (448 или 449) (460 или 461) | char[n+1] где n достаточно велико, чтобы
вместить данные
1<=n<=32 672 | Строка переменной длины с пустым символом-ограничителем | ||
VARCHAR(n) FOR BIT DATA (448 или 449) |
struct { sqluint16 length; char[n] } 1<=n<=32 672 | Символьная строка переменной длины без пустого символа-ограничителя | ||
LONG VARCHAR (456 или 457) |
struct { sqluint16 length; char[n] } 32 673<=n<=32 700 | Символьная строка переменной длины без пустого символа-ограничителя | ||
CLOB(n) (408 или 409) |
struct { sqluint32 length; char data[n]; } 1<=n<=2 147 483 647 | Символьная строка переменной длины без пустого символа-ограничителя с 4-байтным индикатором длины строки | ||
BLOB(n) (404 или 405) |
struct { sqluint32 length; char data[n]; } 1<=n<=2 147 483 647 | Двоичная строка переменной длины без пустого символа-ограничителя с 4-байтным индикатором длины строки | ||
DATE (384 или 385) | char[11] | Символьный формат с пустым символом-ограничителем | ||
TIME (388 или 389) | char[9] | Символьный формат с пустым символом-ограничителем | ||
TIMESTAMP (392 или 393) | char[27] | Символьный формат с пустым символом-ограничителем | ||
| ||||
GRAPHIC(n) (468 или 469) | sqldbchar[n+1] где n достаточно велико, чтобы
вместить данные
1<=n<=127 | Строка двухбайтных символов фиксированной длины с пустым символом-ограничителем | ||
VARGRAPHIC(n) (400 или 401) | sqldbchar[n+1] где n достаточно велико, чтобы
вместить данные
1<=n<=16 336 | Строка двухбайтных символов переменной длины без пустого символа-ограничителя | ||
LONG VARGRAPHIC (472 или 473) |
struct { sqluint16 length; sqldbchar[n] } 16 337<=n<=16 350 | Строка двухбайтных символов переменной длины без пустого символа-ограничителя | ||
DBCLOB(n) (412 или 413) |
struct { sqluint32 length; sqldbchar data[n]; } 1<=n<=1 073 741 823 | Символьная строка переменной длины без пустого символа-ограничителя с 4-байтным индикатором длины строки |