It looks like this is a bug in the Oracle 8i ODBC driver.
I've tried everything I can think of. I'm using 22.214.171.124b.0.
My code works fine with the MS Oracle, Oracle 126.96.36.199.0
and PostgreSQL ODBC drivers (talking to a PostgreSQL DB obviously).
I'm simply doing a "select *" from a table with a CLOB field.
(long when using MS Oracle)
I am retrieving multiple rows; 30 -
SQLSetStmtAttr(m_hstmt, SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)30, 0);
and then using SQLSetPos() and SQLGetData() to retrieve all my
CLOB data for each of the rows.
I do a
SQLSetStmtAttr(m_hstmt, SQL_ATTR_CURSOR_TYPE, (SQLPOINTER)SQL_CURSOR_STATIC, 0);
before the SQLExecDirect() of the SQL,
so I can use SQLSetPos() on the returned result set.
The SQLFetchScroll() always returns SQL_NO_DATA.
Also the SQLExecDirect() returns SQL_SUCCESS_WITH_INFO, the error message being "option value changed". I'm assuming it is refering to the SQL_CURSOR_STATIC, and it looks like it is changing it to a SQL_CURSOR_KEYSET_DRIVEN.
I call these after the SQLExecDirect().
SQLSetStmtAttr(m_hstmt, SQL_ATTR_ROW_BIND_TYPE, SQL_BIND_BY_COLUMN, 0);