使用SQLFetchScroll插入数据

时间:2017-02-03 15:02:23

标签: c++ sql database select

我正在尝试使用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);
}

0 个答案:

没有答案