Объявленный тип данных результата запроса
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 — строго типизированная система, но типизация динамическая, а не статическая. Тип связан с отдельными значениями, а не с контейнерами, используемыми для хранения этих значений.
См. также списки объектов, констант и функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/column_decltype.html