Lo que hace el controlador

En la tabla siguiente se resumen las funciones y los atributos de instrucción que debe implementar un controlador ODBC 3.x para cursores desplazables y de bloque.

Función o

atributo de instrucción
Comentarios
SQL_ATTR_ROW_STATUS_PTR Establece la dirección de la matriz de estado de fila rellenada por SQLFetch y SQLFetchScroll. Esta matriz también se rellena mediante SQLSetPos si se llama a SQLSetPos en el estado de instrucción S6. Si se llama a SQLSetPos en el estado S7, esta matriz no se rellena, pero la matriz a la que apunta el argumento RowStatusArray de SQLExtendedFetch se rellena. Para obtener más información, vea Transiciones de instrucción en el Apéndice B: Tablas de transición de estado odbc.
SQL_ATTR_ROWS_FETCHED_PTR Establece la dirección del búfer en el que SQLFetch y SQLFetchScroll devuelven el número de filas capturadas. Si se llama a SQLExtendedFetch , este búfer no se rellena, pero el argumento RowCountPtr apunta al número de filas capturadas.
SQL_ATTR_ROW_ARRAY_SIZE Establece el tamaño del conjunto de filas usado por SQLFetch y SQLFetchScroll.
SQL_ROWSET_SIZE Establece el tamaño del conjunto de filas utilizado por SQLExtendedFetch. Los controladores ODBC 3.x implementan esto si quieren trabajar con aplicaciones ODBC 2.x que llaman a SQLExtendedFetch o SQLSetPos.
SQLBulkOperations Si un controlador ODBC 3.x debe funcionar con aplicaciones ODBC 2.x que usan SQLSetPos con una operación de SQL_ADD, el controlador debe admitir SQLSetPos con una operación de SQL_ADD además de SQLBulkOperations con una operación de SQL_ADD.
SQLExtendedFetch Devuelve el conjunto de filas especificado. Los controladores ODBC 3.x implementan esto si quieren trabajar con aplicaciones ODBC 2.x que llaman a SQLExtendedFetch o SQLSetPos. A continuación se muestran los detalles de implementación:

: el controlador recupera el tamaño del conjunto de filas del valor del atributo de instrucción SQL_ROWSET_SIZE.
- El controlador recupera la dirección de la matriz de estado de fila del argumento RowStatusArray , no del atributo de instrucción SQL_ATTR_ROW_STATUS_PTR. El argumento RowStatusArray de una llamada a SQLExtendedFetch no debe ser un puntero nulo. (Tenga en cuenta que en ODBC 3.x, el atributo de instrucción SQL_ATTR_ROW_STATUS_PTR puede ser un puntero nulo).
- El controlador recupera la dirección de las filas capturadas en el búfer del argumento RowCountPtr , no del atributo de instrucción SQL_ATTR_ROWS_FETCHED_PTR.
- El controlador devuelve SQLSTATE 01S01 (error en fila) para indicar que se ha producido un error mientras una llamada a SQLExtendedFetch captura las filas. Un controlador ODBC 3.x debe devolver SQLSTATE 01S01 (error en fila) solo cuando se llama a SQLExtendedFetch , no cuando se llama a SQLFetch o SQLFetchScroll . Para conservar la compatibilidad con versiones anteriores, cuando SQLSTATE 01S01 (error en fila) se devuelve mediante SQLExtendedFetch, el Administrador de controladores no ordena los registros de estado en la cola de errores según las reglas indicadas en la sección "Secuencia de registros de estado" de SQLGetDiagField.
SQLFetch Devuelve el siguiente conjunto de filas. A continuación se muestran los detalles de implementación:

: el controlador recupera el tamaño del conjunto de filas del valor del atributo de instrucción SQL_ATTR_ROW_ARRAY_SIZE.
: el controlador recupera la dirección de la matriz de estado de fila del atributo de instrucción SQL_ATTR_ROW_STATUS_PTR.
: el controlador recupera la dirección del búfer capturado de las filas del atributo de instrucción SQL_ATTR_ROWS_FETCHED_PTR.
- La aplicación puede mezclar llamadas entre SQLFetchScroll y SQLFetch.
- SQLFetch devuelve marcadores si la columna 0 está enlazada.
- Se puede llamar a SQLFetch para devolver más de una fila.
- El controlador no devuelve SQLSTATE 01S01 (error en fila) para indicar que se ha producido un error mientras una llamada a SQLFetch captura las filas.
SQLFetchScroll Devuelve el conjunto de filas especificado. A continuación se muestran los detalles de implementación:

: el controlador recupera el tamaño del conjunto de filas del atributo de instrucción SQL_ATTR_ROW_ARRAY_SIZE.
: el controlador recupera la dirección de la matriz de estado de fila del atributo de instrucción SQL_ATTR_ROW_STATUS_PTR.
: el controlador recupera la dirección del búfer capturado de las filas del atributo de instrucción SQL_ATTR_ROWS_FETCHED_PTR.
- La aplicación puede mezclar llamadas entre SQLFetchScroll y SQLFetch.
- El controlador no devuelve SQLSTATE 01S01 (error en fila) para indicar que se ha producido un error mientras las filas se capturaron mediante una llamada a SQLFetchScroll.
SQLSetPos Realiza varias operaciones posicionadas. A continuación se muestran los detalles de implementación:

: se puede llamar a en los estados de instrucción S6 o S7. Para obtener más información, vea Transiciones de instrucción en el Apéndice B: Tablas de transición de estado odbc.
- Si se llama a esto en el estado de instrucción S5 o S6, el controlador recupera el tamaño del conjunto de filas del atributo de instrucción SQL_ATTR_ROWS_FETCHED_PTR y la dirección de la matriz de estado de fila del atributo de instrucción SQL_ATTR_ROW_STATUS_PTR.
- Si se llama en el estado de instrucción S7, el controlador recupera el tamaño del conjunto de filas del atributo de instrucción SQL_ROWSET_SIZE y la dirección de la matriz de estado de fila del argumento RowStatusArray de SQLExtendedFetch.
- El controlador devuelve SQLSTATE 01S01 (error en fila) solo para indicar que se ha producido un error mientras una llamada a SQLSetPos ha capturado filas para realizar una operación masiva cuando se llama a la función en el estado S7. Para conservar la compatibilidad con versiones anteriores, si SQLSTATE 01S01 (error en fila) lo devuelve SQLSetPos, el Administrador de controladores no ordena los registros de estado en la cola de errores según las reglas indicadas en la sección "Secuencia de registros de estado" de SQLGetDiagField.
- Si el controlador debe trabajar con aplicaciones ODBC 2.x que llaman a SQLSetPos con un argumento Operation de SQL_ADD, el controlador debe admitir SQLSetPos con un argumento Operation de SQL_ADD.