1

在 firehose 游标上,当 statement 属性SQL_SOPT_SS_CURSOR_OPTIONS设置为SQL_CO_FIREHOSE_AF并执行该语句时,观察到 autofetch 的不同行为,如下所述:

1) 第一次调用 SQLExecute 时,它​​不会自动获取。2) 在同一个语句句柄上第二次调用 SQLExecute 时,在使用 关闭游标后SQLFreestmt(hstmt, SQL_CLOSE),它会使用 自动获取 1 行SQLExecute

那么预期的行为是什么,是否应该自动获取?这似乎是 SQL Native 客户端驱动程序中的错误。

我也没有看到文档,SQL_CO_FIREHOSE_AF但它列在sqlncli.h?

带有注释的代码片段:

    rc = SQLSetStmtAttr(hstmt1, (UWORD) SQL_SOPT_SS_CURSOR_OPTIONS, (SQLPOINTER) SQL_CO_FIREHOSE_AF, 0);
    ...
    rc = SQLSetStmtAttr(hstmt1, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)1, 0);   
 // Execute first statement
    rc = SQLExecute(hstmt1);  // it does not autofetch the data.
    ...

    rc = SQLFreeStmt(hstmt1, SQL_CLOSE);
    ...
    rc = SQLSetStmtAttr(hstmt1, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)1, 0);   
 // Execute first statement
 rc = SQLExecute(hstmt1);  // it  autofetch 1 record.

谢谢,

穆克什

4

0 回答 0