在firehose游标上,当语句属性SQL_SOPT_SS_CURSOR_OPTIONS
设置为SQL_CO_FIREHOSE_AF
并执行语句时,会观察到自动提取的不同行为,如下所述:
1)第一次调用SQLExecute时,它不会自动提取。
2)当在同一个stament句柄上第二次调用SQLExecute时,在使用SQLFreestmt(hstmt, SQL_CLOSE)
关闭游标后,它会使用SQLExecute
自动提取1行。
那么预期的行为是什么,是否应该自动提取?这似乎是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.
谢谢,
穆克什