Compartir vía


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 utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Microsoft recomienda usar la funcionalidad de 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 de actualización o eliminación posicionada con la sintaxis siguiente:

    UPDATE table-name

    SET column-identifier = {expression | NULL}

    [, column-identifier = {expression | NULL}]

    WHERE CURRENT OF cursor-name

    DELETE FROM table-name WHERE CURRENT OF cursor-name

    La manera más fácil de construir la cláusula SET en una instrucción de actualización posicionada consiste en usar marcadores de parámetros para cada columna que se va a actualizar y usar SQLBindParameter para enlazarlos a los búferes del conjunto de filas para que se actualice la fila. 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. Actualiza 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 de actualización posicionada, la biblioteca de cursores copia los valores de cada columna de la fila actual en su 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 de 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 ninguna fila, identificar una fila diferente o identificar más de una fila. Para obtener más información, vea Construir 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 de actualización o eliminación 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 de

búferes de conjuntos de filas
Valores de

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 de actualización posicionada, la biblioteca de cursores copia los valores de los búferes del conjunto de filas en su memoria caché.