Gracias Paul.
Esto no está relacionado con SQLGetData. De hecho, SQLGetData funciona bien para mí.
Estoy teniendo este problema al ejecutar una consulta y acceder a los buffers vinculados de la siguiente manera (código pseudo):
// Establecer el atributo de la declaración para leer por columna, número de filas, cursor estático y puntero de estado:
/*struct StmtAttrs
{
SQLINTEGER attr;
SQLPOINTER valptr;
SQLINTEGER len;
};*/
SQLHSTMT& stmt = m_stmtHdl.m_hdl;
StmtAttrs parms[5] = \
{{SQL_ATTR_ROW_BIND_TYPE, SQL_BIND_BY_COLUMN, 0},
{SQL_ATTR_CURSOR_TYPE, (SQLPOINTER)SQL_CURSOR_STATIC, 0},
{SQL_ATTR_ROW_ARRAY_SIZE, (SQLPOINTER)limit, 0},
{SQL_ATTR_ROW_STATUS_PTR, &m_rowStatus[0], 0},
{SQL_ATTR_ROWS_FETCHED_PTR, &m_rowsFetched, 0}};
uint32_t i = 0;
SQLINTEGER errcode;
for (; i < 5; ++i)
{
bool ret = sqlSetStmtAttr(stmt, parms[i].attr, parms[i].valptr, parms[i].len);
// código de manejo de errores
}
// Vincular los buffers de entrada para el número de columnas usando SQLBindCol:
// Preparar la consulta usando SQLPrepare
// Por ejemplo: select top 2039 numpk,convert(binary(256),ablob) from myccinfo.dbo.bigdata NOLOCK order by numpk asc ;
// Ejecutar la consulta con SQLExecute(stmt);
// Obtener los datos usando SQLFetchScroll(stmt, SQL_FETCH_NEXT, 0);
// Iterar a través de cada columna y el buffer vinculado para leer los datos