Lo que hace el Administrador de controladores

En la tabla siguiente se resume cómo el Administrador de controladores ODBC 3.x asigna llamadas a controladores ODBC 2.x y ODBC 3.x .

Función o

atributo de instrucción
Comentarios
SQL_ATTR_FETCH_BOOKMARK_PTR Apunta al marcador que se va a usar con SQLFetchScroll. A continuación se muestran los detalles de implementación:

- Cuando una aplicación establece esto en un controlador ODBC 2.x , el Administrador de controladores ODBC 3.x lo almacena en caché. Desreferencia el puntero y pasa el valor al controlador ODBC 2.x en el argumento FetchOffset de SQLExtendedFetch cuando la aplicación llama posteriormente a SQLFetchScroll .
- Cuando una aplicación establece esto en un controlador ODBC 3.x , el Administrador de controladores ODBC 3.x pasa la llamada al controlador.
SQL_ATTR_ROW_STATUS_PTR Apunta a la matriz de estado de fila rellenada por SQLFetch, SQLFetchScroll, SQLBulkOperations y SQLSetPos. A continuación se muestran los detalles de implementación:

- Cuando una aplicación establece esto en un controlador ODBC 2.x , el Administrador de controladores ODBC 3.x almacena en caché su valor. Pasa este valor al controlador ODBC 2.x en el argumento RowStatusArray de SQLExtendedFetch cuando se llama a SQLFetchScroll o SQLFetch .
- Cuando una aplicación establece esto en un controlador ODBC 3.x , el Administrador de controladores ODBC 3.x pasa la llamada al controlador.
- En el estado S6, si una aplicación establece SQL_ATTR_ROW_STATUS_PTR y, a continuación, llama a SQLBulkOperations (con una operación de SQL_ADD) o SQLSetPos sin llamar primero a SQLFetch o SQLFetchScroll, se devuelve SQLSTATE HY011 (atributo no se puede establecer ahora).
SQL_ATTR_ROWS_FETCHED_PTR Apunta al búfer en el que SQLFetch y SQLFetchScroll devuelven el número de filas capturadas. A continuación se muestran los detalles de implementación:

- Cuando una aplicación establece esto en un controlador ODBC 2.x , el Administrador de controladores ODBC 3.x almacena en caché su valor. Pasa este valor al controlador ODBC 2.x en el argumento RowCountPtr de SQLExtendedFetch cuando la aplicación llama a SQLFetch o SQLFetchScroll .
- Cuando una aplicación establece esto en un controlador ODBC 3.x , el Administrador de controladores ODBC 3.x pasa la llamada al controlador.
SQL_ATTR_ROW_ARRAY_SIZE Establece el tamaño del conjunto de filas. A continuación se muestran los detalles de implementación:

- Cuando una aplicación establece esto en un controlador ODBC 2.x , el Administrador de controladores ODBC 3.x lo asigna al atributo de instrucción SQL_ROWSET_SIZE.
- Cuando una aplicación establece esto en un controlador ODBC 3.x , el Administrador de controladores ODBC 3.x pasa la llamada al controlador.
- Cuando una aplicación que trabaja con un controlador ODBC 3.x llama a SQLSetScrollOptions, SQL_ROWSET_SIZE se establece en el valor del argumento RowsetSize si el controlador subyacente no admite SQLSetScrollOptions.
SQL_ROWSET_SIZE Establece el tamaño del conjunto de filas usado por SQLExtendedFetch cuando una aplicación ODBC 2.x llama a SQLExtendedFetch. A continuación se muestran los detalles de implementación:

- Cuando una aplicación establece esto, el Administrador de controladores ODBC 3.x pasa la llamada al controlador, independientemente de la versión del controlador.
- Cuando una aplicación que trabaja con un controlador ODBC 2.x llama a SQLSetScrollOptions, SQL_ROWSET_SIZE se establece en el valor del argumento RowsetSize .
SQLBulkOperations Realiza una operación de inserción, o actualiza, elimina o captura mediante operaciones de marcador. A continuación se muestran los detalles de implementación:

- Cuando una aplicación llama a SQLBulkOperations con una operación de SQL_ADD en un controlador ODBC 2.x , el Administrador de controladores ODBC 3.x lo asigna a SQLSetPos con una operación de SQL_ADD.
- Cuando se trabaja con un controlador ODBC 2.x que no admite SQLSetPos con una operación de SQL_ADD, el Administrador de controladores ODBC 3.x no asigna SQLSetPos con una operación de SQL_ADD a SQLBulkOperations con una operación de SQL_ADD. Esto se debe a que no se puede llamar a SQLBulkOperations en el estado S7, que en ODBC 2.x era el único estado en el que se podía llamar a SQLSetPos .
- Si la aplicación llama a SQLBulkOperations con una operación de SQL_ADD en un controlador ODBC 2.x antes de llamar a SQLFetchScroll, el Administrador de controladores ODBC 3.x devuelve un error.
SQLExtendedFetch Devuelve el conjunto de filas especificado. Excepto por la restricción indicada, el Administrador de controladores ODBC 3.x pasa llamadas a SQLExtendedFetch al controlador, independientemente de la versión del controlador.
SQLFetch Devuelve el siguiente conjunto de filas. A continuación se muestran los detalles de implementación:

- Cuando una aplicación llama a SQLFetch en un controlador ODBC 2.x , el Administrador de controladores ODBC 3.x lo asigna a SQLExtendedFetch. El argumento FetchOrientation de SQLExtendedFetch se establece en SQL_FETCH_NEXT. El Administrador de controladores usa el valor almacenado en caché del atributo de instrucción SQL_ATTR_ROW_STATUS_PTR para el argumento RowStatusArray y el valor almacenado en caché del atributo de instrucción SQL_ATTR_ROWS_FETCHED_PTR para el argumento RowCountPtr .
- Una aplicación ODBC 3.x puede mezclar llamadas a SQLFetch y SQLFetchScroll en un controlador ODBC 2.x porque el Administrador de controladores ODBC 3.x asigna SQLFetch a SQLExtendedFetch cuando una aplicación la llama en un controlador ODBC 2.x .
- Si un controlador ODBC 2.x no admite SQLExtendedFetch, el Administrador de controladores ODBC 3.x no asigna SQLFetch ni SQLFetchScroll a SQLExtendedFetch cuando una aplicación la llama en ese controlador. Si la aplicación intenta establecer SQL_ATTR_ROW_ARRAY_SIZE en un valor mayor que 1, se devuelve SQLSTATE HYC00 (característica opcional no implementada).
- Excepto en el caso de las restricciones indicadas, el Administrador de controladores ODBC 3.x pasa llamadas a SQLFetch al controlador, independientemente de la versión del controlador.
SQLFetchScroll Devuelve el conjunto de filas especificado. A continuación se muestran los detalles de implementación:

- Cuando una aplicación llama a SQLFetchScroll en un controlador ODBC 2.x , el Administrador de controladores ODBC 3.x lo asigna a SQLExtendedFetch. Usa el valor almacenado en caché del atributo de instrucción SQL_ATTR_ROW_STATUS_PTR para el argumento RowStatusArray y el valor almacenado en caché del atributo de instrucción SQL_ATTR_ROWS_FETCHED_PTR para el argumento RowCountPtr . Si el argumento FetchOrientation de SQLFetchScroll es SQL_FETCH_BOOKMARK, usa el valor almacenado en caché del atributo de instrucción SQL_ATTR_FETCH_BOOKMARK_PTR para el argumento FetchOffset y devuelve un error si el argumento FetchOffset de SQLFetchScroll no es 0.
- Cuando una aplicación llama a esto en un controlador ODBC 3.x , el Administrador de controladores ODBC 3.x pasa la llamada al controlador.
SQLSetPos Realiza varias operaciones posicionadas. El Administrador de controladores ODBC 3.x pasa llamadas a SQLSetPos al controlador, independientemente de la versión del controlador.
SQLSetScrollOptions Cuando el Administrador de controladores asigna SQLSetScrollOptions para una aplicación que trabaja con un controlador ODBC 3.x que no admite SQLSetScrollOptions, el Administrador de controladores establece la opción de instrucción SQL_ROWSET_SIZE, no el atributo de instrucción SQL_ATTR_ROW_ARRAY_SIZE, en el argumento RowsetSize de SQLSetScrollOption. Como resultado, una aplicación no puede usar SQLSetScrollOptions al capturar varias filas mediante una llamada a SQLFetch o SQLFetchScroll. Solo se puede usar al capturar varias filas mediante una llamada a SQLExtendedFetch.