我正在尝试使用SQLFetchScroll
插入表格数据。问题是如果我将ROWSET_SIZE
设置为2,例如,来自源的1000行,我只将500行(一半)插入目标表。我认为问题在于函数SQLExecute
,但我无法弄清楚如何正确设置它。有谁知道怎么解决这个问题,好吗?
const SQLUSMALLINT ROWSET_SIZE = 2;
SQLSetStmtAttr(srcHStmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)ROWSET_SIZE, 0);
SQLLEN FetchOffset = 0;
while (TRUE)
{
srcReturn = SQLFetchScroll(srcHStmt, SQL_FD_FETCH_NEXT, FetchOffset);
if (srcReturn == SQL_NO_DATA_FOUND || srcReturn == SQL_ERROR)
{
if (srcReturn == SQL_ERROR) showError(SQL_HANDLE_DBC, srcHDBC);
break;
}
dstReturn = SQLExecute(dstHStmt);
}
编译器:VS2015 / 64位机器。
使用SQL_FETCH_RELATIVE
时,我的结果相同。
SQLExecDirect(...);
SQLLEN FetchOffset = 2;
while (TRUE)
{
srcReturn = SQLFetchScroll(srcHStmt, SQL_FETCH_RELATIVE, FetchOffset);
if (srcReturn == SQL_NO_DATA_FOUND || srcReturn == SQL_ERROR)
{
if (srcReturn == SQL_ERROR) showError(SQL_HANDLE_DBC, srcHDBC);
break;
}
dstReturn = SQLExecute(dstHStmt);
}