const char *sqlite3_column_decltype(sqlite3_stmt*,int); const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
Первый параметр это подготовленный запрос. Если это SELECT N-й столбец возвращенного набора результатов этого SELECT это столбец таблицы (не выражение или подзапрос) тогда, заявленный тип столбца таблицы возвращен. Если N-й столбец набора результатов это выражение или подзапрос, то вернется NULL. Возвращаемая строка всегда в UTF-8.
Например, учитывая схему базы данных:
CREATE TABLE t1(c1 VARIANT);
следующий запрос будет собран:
SELECT c1 + 1, c1 FROM t1;
Это возвратило бы последовательность "VARIANT" для второго столбца результата (i==1) и NULL для первого столбца результата (i==0).
SQLite использует динамический тип во время выполнения. Таким образом, просто, потому что колонка, как объявляют, содержит конкретный тип, не означает, что данные в той колонке, имеют заявленный тип. SQLite со строгим контролем типов, но типы динамические. Тип связан с отдельными значениями, не с контейнерами, используемыми, чтобы хранить те значения.