1

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.

ありがとう、

ムケシュ

4

0 に答える 0