Compartir a través de


SQLSetPos (biblioteca de cursores)

Importante

Esta característica se quitará en una versión futura de Windows. Evite usar esta característica en el nuevo trabajo de desarrollo y planee modificar las aplicaciones que actualmente usan esta característica. Microsoft recomienda usar la funcionalidad del cursor del controlador.

En este tema se describe el uso de la función SQLSetPos en la biblioteca de cursores. Para obtener información general sobre SQLSetPos, vea Función SQLSetPos.

La biblioteca de cursores admite la operación SQL_POSITION solo para el argumento Operation en SQLSetPos. Admite el valor SQL_LOCK_NO_CHANGE solo para el argumento LockType .

Si el controlador no admite operaciones masivas, la biblioteca de cursores devuelve SQLSTATE HYC00 (controlador no compatible) cuando se llama a SQLSetPos con RowNumber igual a 0. Este comportamiento del controlador no se recomienda.

La biblioteca de cursores no admite las operaciones de SQL_UPDATE y SQL_DELETE en una llamada a SQLSetPos. La biblioteca de cursores implementa una instrucción SQL de actualización o eliminación posicionada mediante la creación de una instrucción de actualización o eliminación buscada con una cláusula WHERE que enumera los valores almacenados en su caché para cada columna enlazada. Para obtener más información, vea Processing Positioned Update and Delete Statements.

Si el controlador no admite cursores estáticos, una aplicación que trabaje con la biblioteca de cursores debe llamar a SQLSetPos solo en un conjunto de filas capturado por SQLExtendedFetch o SQLFetchScroll, no por SQLFetch. La biblioteca de cursores implementa SQLExtendedFetch y SQLFetchScroll realizando llamadas repetidas de SQLFetch (con un tamaño de conjunto de filas de 1) en el controlador. La biblioteca de cursores pasa llamadas a SQLFetch, por otro lado, al controlador. Si se llama a SQLSetPos en un conjunto de filas de varias filas capturado por SQLFetch cuando el controlador no admite cursores estáticos, se producirá un error en la llamada porque SQLSetPos no funciona con cursores de solo avance. Esto se producirá incluso si una aplicación ha llamado correctamente a SQLSetStmtAttr para establecer SQL_ATTR_CURSOR_TYPE en SQL_CURSOR_STATIC, que la biblioteca de cursores admite incluso si el controlador no admite cursores estáticos.