delete

La sentencia EGL delete elimina un registro de un archivo o una fila de una base de datos.

Diagrama de sintaxis de la sentencia delete
nombre de registro
Nombre del objeto de E/S: un registro indexado, relativo o SQL asociado con el registro de archivo o la fila SQL que se suprime
from IDconjuntoResultados
ID que conecta la sentencia delete con una sentencia get o open ejecutada antes en el mismo programa. Para obtener detalles, consulte el apartado resultSetID.

A continuación se ofrece un ejemplo:

  if (userRequest == "D")
    try
      get myRecord forUpdate;
      onException 
        myErrorHandler(12);   // sale del programa
    end

    try
      delete myRecord;
      onException 
        myErrorHandler(16);
    end
  end

El comportamiento de la sentencia delete depende del tipo de registro. Para obtener detalles acerca del proceso SQL, consulte el tema Registro SQL.

Registro indexado o relativo

Si desea suprimir un registro indexado o relativo, haga lo siguiente:
  • Emita una sentencia get para el registro y especifique la opción forUpdate
  • Emita la sentencia delete, sin que intervenga ninguna operación de E/S en el mismo archivo
Después de emitir la sentencia get, el resultado de la próxima operación de E/S en el mismo archivo será el siguiente:
  • Si la próxima operación de E/S es una sentencia replace en el mismo registro EGL, se cambia el registro del archivo
  • Si la próxima operación de E/S es una sentencia delete en el mismo registro EGL, el registro del archivo se marca para supresión
  • Si la próxima operación de E/S es una sentencia get en el mismo archivo (con la opción forUpdate), una sustitución o supresión subsiguiente es válida en el registro de archivo de lectura recién creado
  • Si la próxima operación de E/S es una sentencia get en el mismo archivo (sin la opción forUpdate) o es un cierre en el mismo archivo, el registro de archivo se libera sin cambios.

Encontrará los detalles sobre la opción forUpdate en get.

Registro SQL

En el caso de procesos SQL, debe utilizar la opción forUpdate en una sentencia EGL get o open para recuperar una fila para la supresión subsiguiente:
  • Puede emitir una sentencia get para recuperar la fila; o
  • Puede emitir una sentencia open para seleccionar un conjunto de filas y, a continuación, invocar una sentencia get next para recuperar la fila en cuestión.
En cualquier caso, la sentencia EGL delete está representada en el código generado por una sentencia SQL DELETE que hace referencia a la fila actual en un cursor. No puede modificar esa sentencia SQL, cuyo formato es el siguiente:
  DELETE FROM nombreTabla
    WHERE CURRENT OF cursor

Si desea escribir su propia sentencia SQL DELETE, utilice la sentencia EGL execute.

No puede utilizar una sola sentencia EGL delete para suprimir filas de varias tablas SQL.

Tareas relacionadas
Diagrama de sintaxis

Condiciones de uso | Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.