Compartir a través de


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:

  1. Llama a SQLSetPos para colocar el cursor en la fila que se va a actualizar o eliminar.

  2. 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.

  3. 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 .

  4. 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é.