对于SELECT语句,主要分为otl_explicit_select和otl_implicit_select两种。
1)otl_explicit_select - 显式方式,直接使用direct_exec执行,是一种简单的SELECT,调用的ODBC函数顺序为:
SQLPrepare(), SQLDescribeCol(),..., SQLBindParameter(),..., SQLExecute(), SQLFetch()
此为默认的方式,调用时,使用下列函数:
otl_connect db();
db.direct_exec("SELECT PRODUCTID, RECDATETIME FROM BSVCBUSRUNDATALD5");
2)otl_implicit_select - 隐式方式,通过流打开时使用,调用的ODBC函数顺序为:
SQPrepare(), SQLBindParameter(),..., SQLExecute(), SQLDescribeCol(), ..., SQLFetch().
调用时,使用下列函数:
otl_connect db;
otl_stream o;
o.open(fetch_size, "SELECT PRODUCTID, RECDATETIME FROM BSVCBUSRUNDATALD5", db);
并且如果使用此方式,需要同时使用下列宏定义
#define OTL_ODBC
#define OTL_ODBC_SELECT_STM_EXECUTE_BEFORE_DESCRIBE
如果使用Ignite ODBC SQL,暂时只能prefetch一行数据,即fetch_size只能为1。