Ejecución de instrucciones de eliminación y actualización Positioned
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.
Una vez que una aplicación ha capturado un bloque de datos con SQLFetchScroll, puede actualizar o eliminar los datos del bloque. Para ejecutar una actualización o eliminación posicionada, la aplicación:
Llama a SQLSetPos para colocar el cursor en la fila que se va a actualizar o eliminar.
Construye una instrucción update o delete posicionada con la sintaxis siguiente:
UPDATEtable-name
SETcolumn-identifier= {expression | NULL}
[,column-identifier= {expresión | NULL}]
WHERE CURRENT OFcursor-name
DELETE FROMtable-nameWHERE CURRENT OFcursor-name
La manera más fácil de construir la cláusula SET en una instrucción de actualización posicionada es usar marcadores de parámetros para cada columna que se va a actualizar y usar SQLBindParameter para enlazarlos a los búferes de conjunto de filas para la fila que se va a actualizar. En este caso, el tipo de datos C del parámetro será el mismo que el tipo de datos C del búfer del conjunto de filas.
Novedades los búferes del conjunto de filas de la fila actual si ejecutará una instrucción de actualización posicionada. Después de ejecutar correctamente una instrucción update posicionada, la biblioteca de cursores copia los valores de cada columna de la fila actual en su memoria caché.
Precaución
Si la aplicación no actualiza correctamente los búferes del conjunto de filas antes de ejecutar una instrucción de actualización posicionada, los datos de la memoria caché serán incorrectos después de ejecutar la instrucción .
Ejecuta la instrucción update o delete posicionada mediante una instrucción diferente a la instrucción asociada al cursor.
Precaución
La cláusula WHERE construida por la biblioteca de cursores para identificar la fila actual puede no identificar las filas, identificar una fila diferente o identificar más de una fila. Para obtener más información, vea Construcción de instrucciones buscadas.
Todas las instrucciones update y delete posicionadas requieren un nombre de cursor. Para especificar el nombre del cursor, una aplicación llama a SQLSetCursorName antes de que se abra el cursor. Para usar el nombre del cursor generado por el controlador, una aplicación llama a SQLGetCursorName después de abrir el cursor.
Una vez que la biblioteca de cursores ejecuta una instrucción update o delete posicionada, la matriz de estado, los búferes de conjunto de filas y la memoria caché mantenidas por la biblioteca de cursores contienen los valores que se muestran en la tabla siguiente.
Instrucción usada | Valor de la matriz de estado de fila | Valores en Búferes de conjuntos de filas |
Valores en Búferes de caché |
---|---|---|---|
Actualización posicionada | SQL_ROW_UPDATED | Nuevos valores[1] | Nuevos valores[1] |
Eliminación posicionada | SQL_ROW_DELETED | Valores anteriores | Valores anteriores |
[1] La aplicación debe actualizar los valores de los búferes del conjunto de filas antes de ejecutar la instrucción de actualización posicionada; después de ejecutar la instrucción update posicionada, la biblioteca de cursores copia los valores de los búferes del conjunto de filas en su memoria caché.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de