execute

La sentencia EGL execute permite escribir una o varias sentencias SQL; en particular, sentencias de definición de datos SQL (de tipo CREATE TABLE, por ejemplo) y sentencias de manipulación de datos (de tipo INSERT o UPDATE, por ejemplo)


Diagrama de sintaxis de la sentencia execute
#sql{ sentenciaSQL }
Una sentencia SQL explícita. Si desea que la sentencia SQL actualice o suprima una fila de un conjunto de resultados, codifique una sentencia SQL UPDATE o DELETE que incluya la siguiente cláusula:
  WHERE CURRENT OF IDconjuntoResultados
IDconjuntoResultados
El ID de conjunto de resultados especificado en la sentencia EGL open que ha hecho disponible el conjunto de resultados.

No deje espacios entre #sql y el corchete de apertura.

for nombre de registro SQL
Nombre de un registro SQL.

Si especifica un tipo de sentencia (delete, insert o update), EGL utiliza el registro SQL para construir una sentencia SQL implícita, como se describe más adelante. En cualquier caso, puede utilizar el registro SQL para probar el resultado de la operación.

IDsentenciaPreparada
Hace referencia a una sentencia EGL prepare que tiene el ID especificado. Si no hace referencia a una sentencia prepare, debe especificar una sentencia SQL explícita o una combinación de un registro SQL y un tipo de sentencia (delete, insert o update).
delete, insert, update
Indica que EGL debe proporcionar una sentencia SQL implícita del tipo especificado. Si especifica un tipo de sentencia pero no un nombre de registro SQL, se produce un error de tiempo de declaración.

Si no establece un tipo de sentencia, debe especificar una sentencia SQL explícita o una referencia a una sentencia prepare.

Para obtener una visón general de las sentencias SQL implícitas, consulte el apartado Soporte SQL.

A continuación se ofrecen varios ejemplos de sentencias (suponiendo que employeeRecord esté en un registro SQL):
  execute 
    #sql{ 
      create table employee (
			 	   empnum decimal(6,0) not null,
 				   empname char(40) not null,
				   empphone char(10) not null)
    };

  execute update for employeeRecord;

  execute
    #sql{ 
      call aStoredProcedure( :argumentItem)
    };
Puede utilizar una sentencia execute para emitir sentencias SQL de los siguientes tipos:
No puede utilizar una sentencia execute para emitir sentencias SQL de los siguientes tipos:

Sentencia SQL DELETE implícita

El resultado de solicitar una sentencia SQL DELETE implícita es que una propiedad de registro SQL (defaultSelectCondition) determina qué filas de tabla se suprimen, siempre y cuando el valor de cada columna de clave de tabla SQL sea igual al valor del elemento de clave correspondiente del registro SQL. Si no especifica una clave de registro ni una condición de selección por omisión, se suprimen todas las filas de tabla.

La sentencia SQL DELETE implícita de un registro determinado es similar a la sentencia siguiente:
  DELETE FROM nombreTabla
  WHERE  columnaClave01 = :elementoClave01

No puede utilizar una sola sentencia EGL para suprimir filas de más de una tabla de base de datos.

Sentencia SQL INSERT implícita

Por omisión, el resultado de solicitar una sentencia SQL INSERT implícita es el siguiente:
  • El valor de clave del registro determina la posición lógica de los datos en la tabla. Un registro que no tenga una clave se maneja de acuerdo con la definición de tabla SQL y las normas de la base de datos.
  • Como resultado de la asociación de elementos de registro y columnas de tabla SQL en el componente de registro, el código generado coloca los datos de cada elemento de registro en la columna de tabla SQL relacionada.
  • Si ha declarado un elemento de registro como de sólo lectura, la sentencia SQL INSERT generada no incluye ese elemento de registro, y el sistema de gestión de bases de datos establece el valor de la columna de tabla SQL relacionada en el valor por omisión especificado al definir la columna.
El formato de la sentencia SQL INSERT implícita es como este:
  INSERT INTO nombreTabla
    (columna01, ... columnaNN)
    values (:elementoRegistro01, ... :elementoRegistroNN)
A continuación se indican algunas condiciones de error:
  • Se especifica una sentencia SQL de un tipo que no es INSERT
  • Se especifica alguna, pero no todas las cláusulas de una sentencia SQL INSERT
  • Se especifica una sentencia SQL INSERT (o se acepta una sentencia SQL implícita) que tiene alguna de estas características:
    • Está relacionada con más de una tabla SQL
    • Incluye sólo variables de lenguaje principal que ha declarado como de sólo lectura
    • Está asociada con una columna que no existe o que es incompatible con la variable de lenguaje principal relacionada

Sentencia SQL UPDATE implícita

Por omisión, el resultado de solicitar una sentencia SQL UPDATE implícita es el siguiente:
  • Una propiedad de registro SQL (defaultSelectCondition) determina qué filas de tabla se seleccionan, siempre y cuando el valor de cada columna de clave de tabla SQL sea igual al valor del elemento de clave correspondiente del registro SQL. Si no especifica una clave de registro ni una condición de selección por omisión, se actualizan todas las filas de tabla.
  • Como resultado de la asociación de elementos de registro y columnas de tabla SQL en la declaración de registro SQL, una columna de tabla SQL determinada recibe el contenido del elemento de registro relacionado. Sin embargo, si una columna de tabla SQL está asociada con un elemento de registro que es de sólo lectura, esa columna no se actualiza.
El formato de la sentencia SQL UPDATE implícita de un registro determinado es similar al de la sentencia siguiente:
  UPDATE nombreTabla
  SET    columna01 = :elementoRegistro01, 
         columna02 = :elementoRegistro01, ... 
         columnaNN = :elementoRegistroNN
  WHERE  columnaClave01 = :elementoClave01
En cualquiera de los siguientes casos se produce un error:
  • Todos los elementos están identificados como de sólo lectura
  • La sentencia intenta actualizar más de una tabla SQL
  • Un elemento cuyo valor se escribe en la base de datos está asociado con una columna que no existe en tiempo de ejecución o que es incompatible con ese elemento

Tareas relacionadas
Diagrama de sintaxis

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