firehose カーソルで、statement 属性SQL_SOPT_SS_CURSOR_OPTIONS
が に設定されSQL_CO_FIREHOSE_AF
、ステートメントが実行されると、以下に説明する autofetch の異なる動作が観察されました。
1) SQLExecute が最初に呼び出されたとき、自動フェッチされません。2) 同じステートメント ハンドルで SQLExecute が 2 回呼び出されると、 を使用しSQLFreestmt(hstmt, SQL_CLOSE)
てカーソルを閉じた後、 を使用して 1 行を自動フェッチしSQLExecute
ます。
では、オートフェッチする必要があるかどうかに関係なく、予想される動作は何ですか? これは、SQL ネイティブ クライアント ドライバーのバグのようです。
また、ドキュメントは表示されませんでし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.
ありがとう、
ムケシュ