const char *sqlite3_column_decltype(sqlite3_stmt*,int); const void *sqlite3_column_decltype16(sqlite3_stmt*,int);
第一個參數是一個已準備好的陳述式 (prepared statement)。如果這個陳述式是一個 SELECT 陳述式,且該 SELECT 所返回結果集的第 N 個欄位是一個資料表欄位(不是運算式或子查詢),則會返回該資料表欄位的宣告類型。如果結果集的第 N 個欄位是一個運算式或子查詢,則會返回 NULL 指標。返回的字串一律以 UTF-8 編碼。
例如,給定資料庫綱要
CREATE TABLE t1(c1 VARIANT);
以及要編譯的以下陳述式
SELECT c1 + 1, c1 FROM t1;
此例程會針對第二個結果欄位 (i==1) 返回字串 "VARIANT",而針對第一個結果欄位 (i==0) 返回 NULL 指標。
SQLite 使用動態執行時期類型。因此,即使宣告一個欄位包含特定類型,也不表示儲存在該欄位中的資料就是宣告的類型。SQLite 是強類型,但類型是動態的,而不是靜態的。類型與個別值關聯,而不是與用於儲存這些值的容器關聯。