Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
La biblioteca de cursores soporta sentencias positioned update y delete reemplazando la cláusula WHERE CURRENT OF en dichas sentencias por una cláusula WHERE que enumera los valores almacenados en su caché para cada columna acotada. La biblioteca de cursores pasa las sentencias y DELETE recién construidas UPDATE al controlador para su ejecución. Para las sentencias de actualización posicionadas, la biblioteca de cursores actualiza su caché desde los valores en los buffers de filas y establece el valor correspondiente en el array de estado de filas a SQL_ROW_UPDATED. Para las sentencias de eliminación posicionadas, establece el valor correspondiente en el array de estado de fila a SQL_ROW_DELETED.
Caution
La cláusula WHERE construida por la biblioteca de cursores para identificar la fila actual puede no identificar ninguna fila, identificar una fila diferente o identificar más de una fila. Para más información, véase Construcción de Sentencias Buscadas, más adelante en este apéndice.
Las sentencias de actualización y eliminación posicionadas están sujetas a las siguientes restricciones:
Las sentencias de actualización y eliminación posicionadas solo pueden usarse en los siguientes casos: cuando una sentencia SELECT generó el conjunto de resultados; cuando la instrucción SELECT no contenía una unión, una cláusula UNION o una cláusula GROUP BY ; y cuando cualquier columna que usara un alias u expresión en la lista select no estaba vinculada con SQLBindCol.
Si una aplicación prepara una sentencia de actualización o eliminación posicionada, debe hacerlo después de haber llamado SQLFetch o SQLFetchScroll. Aunque la biblioteca de cursores envía la instrucción al controlador para su preparación, la cierra y la ejecuta directamente cuando la aplicación llama a SQLExecute.
Si el controlador solo soporta una sentencia activa, la biblioteca de cursores recupera el resto del conjunto de resultados y luego recupera el conjunto de filas actual de su caché antes de ejecutar una instrucción de actualización o eliminación posicionada. Si la aplicación llama entonces a una función que devuelve metadatos en un conjunto de resultados (por ejemplo, SQLNumResultCols o SQLDescribeCol), la biblioteca de cursores devuelve un error.
Si se realiza una instrucción de actualización o eliminación posicionada en una columna de una tabla que incluye una columna de marca de tiempo que se actualiza automáticamente cada vez que se realiza una actualización, todas las sentencias de actualización o eliminación posicionadas posteriores fallarán si la columna de marca de tiempo está vinculada. Esto ocurre porque la instrucción de actualización o eliminación buscada que crea la biblioteca de cursores no identifica con precisión la fila a actualizar. El valor en la declaración buscada para la columna de marca de tiempo no coincidirá con el valor actualizado automáticamente de la columna de la marca de tiempo.