prepare

La sentencia EGL prepare especifica una sentencia SQL PREPARE, que opcionalmente incluye detalles que sólo se conocen durante la ejecución. La sentencia SQL preparada se ejecuta mediante la ejecución de una sentencia EGL execute o (si la sentencia SQL devuelve un conjunto de resultados) mediante la ejecución de una sentencia EGL open o get.


Diagrama de sintaxis de la sentencia prepare
IDsentenciaPreparada
Identificador que relaciona la sentencia prepare con la sentencia execute, open o get.
expresiónSerie
Una expresión de serie que contiene una sentencia SQL válida.
nombre de registro SQL
Nombre de un registro SQL. La especificación de este nombre ofrece dos ventajas:
  • El editor EGL suministra un diálogo para que permite derivar una sentencia SQL basada en las especificaciones del usuario
  • Una vez ejecutada la sentencia prepare, puede probar el nombre de registro con un valor de error de E/S para determinar si la sentencia ha sido satisfactoria, como en el ejemplo siguiente:
      try
        prepare prep01 from  
         "insert into " + aTableName + 
         "(empnum, empname) " +
         "value ?, ?"
        for empRecord;
    
      onException
        if empRecord is unique
          myErrorHandler(8);
        else
          myErrorHandler(12);
        end
      end
A continuación se ofrece otro ejemplo:
  myString = 
    "insert into myTable " +  "(empnum, empname) " +
    "value ?, ?";

  try
    prepare myStatement 
      from myString;
  onException
    myErrorHandler(12);   // sale del programa
  end

  try
    execute myStatement 
    using :myRecord.empnum,
          :myRecord.empname;
  onException
    myErrorHandler(15);
  end

Como se muestra en los ejemplos anteriores, el desarrollador puede utilizar un signo de interrogación (?) cuando debe aparecer una variable de lenguaje principal. A continuación, el nombre de la variable de lenguaje principal utilizada durante la ejecución se coloca en la cláusula using de la sentencia execute, open o get que ejecuta la sentencia preparada.

Una sentencia prepare que actúa en una fila de un conjunto de resultados puede incluir una frase en el formato where current of resultSetIdentifier. Esta técnica sólo es válida en la siguiente situación:
A continuación se ofrece un ejemplo:
	 prepare prep02 from
    "update myTable " +
    "set empname = ?,  empphone = ?  where current of x1" ;
 
  execute prep02 using empname, empphone ;
  freeSQL prep02;

Para obtener un ejemplo de cómo afectan los paréntesis a la utilización de un signo más (+), consulte la sección Expresiones.

Conceptos relacionados
Referencias a componentes
Tipos de registros y propiedades
Soporte de SQL

Consulta relacionada
add
close
delete
Manejo de excepciones
execute
Expresiones
freeSQL
get
get next
get previous
Valores de error de E/S
Sentencias EGL
open
replace
Propiedades de elementos SQL
Expresiones de texto
Diagrama de sintaxis para sentencias y mandatos EGL

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