描述
返回列值作为指向不受保护的sqlite3_value对象的指针。
C / C ++语法
sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol); |
PB语法
FUNCTION sqlite3_column_value ( _ BYVAL hStmt AS DWORD, _ BYVAL nCol AS LONG _ ) AS DWORD |
参数
pStmt
[in]语句句柄。
nCol
[in]应返回信息的列的索引。结果集的最左列有索引0。结果中的列数可以使用sqlite3_column_count确定。
返回值
列值作为指向不受保护的sqlite3_value对象的指针。
备注
如果SQL语句当前没有指向有效的行,或者如果列索引超出范围,则结果是未定义的。这些功能只能在最近调用sqlite3_step已返回SQLITE_ROW时调用,并且之后不再调用sqlite3_reset或sqlite3_finalize.如果在sqlite3_reset或sqlite3_finalize之后或sqlite3_step返回了除了SQLITE_ROW之外的任何其他函数中调用了这些函数,则结果未定义。sqlite3_reset或sqlite3_reset或sqlite3_finalize在sqlite3_value待处理之前从另一个线程调用,则结果未定义。
sqlite3_column_value返回的对象是一个无保护的sqlite3_value对象。不受保护的sqlite3_value对象只能与sqlite3_bind_value和sqlite3_result_value一起使用。如果以sqlite3_column_value返回的未受保护的sqlite3_value对象以任何其他方式使用,包括调用sqlite3_value_int,sqlite3_value_text或sqlite3_value_bytes等功能,则行为是未定义的。
如果在评估任何这些功能时发生内存分配错误,则返回默认值。默认值为NULL指针。对sqlite3_errcode的后续调用将返回SQLITE_NOMEM。
C ++实现代码
SQLITE_API sqlite3_value *sqlite3_column_value(sqlite3_stmt *pStmt, int i){
Mem *pOut = columnMem(pStmt, i);
if( pOut->flags&MEM_Static ){
pOut->flags &= ~MEM_Static;
pOut->flags |= MEM_Ephem;
}
columnMallocFailure(pStmt);
return (sqlite3_value *)pOut;
}