描述
返回查询结果的声明数据类型。
C / C ++语法
const char *sqlite3_column_decltype16(sqlite3_stmt*,int); |
PB语法
FUNCTION sqlite3_column_decltype16 ( _ BYVAL hStmt AS DWORD, _ BYVAL colNumber AS LONG _ ) AS DWORD |
参数
pStmt
[in]准备好的语句句柄。
colNumber
[in]结果集的列号。结果集的最左列有索引0。结果中的列数可以使用sqlite3_column_count确定。
返回值
声明的数据类型。
备注
第一个参数是一个准备好的语句。如果此语句是SELECT语句,并且该SELECT的返回结果集的第N列是表列(不是表达式或子查询),则返回表列的声明类型。如果结果集的第N列是表达式或子查询,则返回NULL指针。返回的字符串始终是UTF-8编码的。
例如,给定数据库模式:
创建表t1(c1 VARIANT);
以及以下要编译的陈述:
SELECT c1 + 1,c1 FROM t1;
此函数将返回第二个结果列(i == 1)的字符串“VARIANT”,并返回第一个结果列(i == 0)的NULL指针。
SQLite使用动态运行时输入。所以只是因为列被声明为包含一个特定的类型并不意味着该列中存储的数据是声明的类型。SQLite是强类型的,但是键入是动态的不是静态的。类型与单个值相关联,而不是用于保存这些值的容器。
C ++实现代码
#ifndef SQLITE_OMIT_DECLTYPE
/*
** Return the column declaration type (if applicable) of the 'i'th column
** of the result set of SQL statement pStmt.
*/
SQLITE_API const char *sqlite3_column_decltype(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text, COLNAME_DECLTYPE);
}
#ifndef SQLITE_OMIT_UTF16
SQLITE_API const void *sqlite3_column_decltype16(sqlite3_stmt *pStmt, int N){
return columnName(
pStmt, N, (const void*(*)(Mem*))sqlite3_value_text16, COLNAME_DECLTYPE);
}
#endif /* SQLITE_OMIT_UTF16 */
#endif /* SQLITE_OMIT_DECLTYPE */