Incrustación de instrucciones SQL en programas de aplicación

Puede incluir instrucciones SQL en un programa fuente que se enviará a Db2 coprocessor o Db2 precompiler. Se dice que tales declaraciones están integradas en el programa de aplicación. Una sentencia incorporada se puede localizar en cualquier lugar del programa de aplicación donde se permite una sentencia de lenguaje de host. Cada sentencia incorporada debe ir precedida de una palabra clave (o palabras clave) para indicar que la sentencia es una sentencia SQL.

Consejo: Db2 coprocessor » es el método recomendado para procesar instrucciones SQL en programas de aplicación. En comparación con el Db2 precompiler, el Db2 coprocessor tiene menos restricciones en los programas SQL y es más compatible con las últimas mejoras de SQL y de los lenguajes de programación. Ver Procesamiento de sentencias SQL mediante el coprocesador de la biblioteca de optimización de sentencias SQL ( Db2 ).
  • En C y COBOL, cada sentencia incrustada debe ir precedida de las palabras clave EXEC SQL.
  • En Java™, cada instrucción incrustada debe ir precedida de las palabras clave " #sql".
  • En REXX, cada sentencia incrustada debe ir precedida de la palabra clave EXECSQL.

Declaraciones ejecutables integradas en aplicaciones

Una instrucción ejecutable incrustada en un programa de aplicación se ejecuta cada vez que se ejecutaría una instrucción del lenguaje anfitrión si se especificara en el mismo lugar. (Así, por ejemplo, una instrucción dentro de un bucle se ejecuta cada vez que se ejecuta el bucle, y una instrucción dentro de una construcción condicional se ejecuta solo cuando se cumple la condición)

Una sentencia incorporada puede contener referencias a variables del lenguaje principal. Una variable de host a la que se hace referencia de esta manera puede utilizarse de dos maneras:
Como entrada
El valor actual de la variable host se utiliza en la ejecución de la instrucción.
Como salida
A la variable se le asigna un nuevo valor como resultado de la ejecución de la sentencia.

En particular, todas las referencias a variables del lenguaje principal en expresiones y predicados se sustituyen de manera efectiva por los valores actuales de las variables; es decir, las variables se utilizan como entrada. El tratamiento de otras referencias se describe individualmente para cada declaración.

La ejecución exitosa o fallida de la instrucción se indica estableciendo los campos SQLCODE y SQLSTATE en el SQLCA.1 Por lo tanto, debe seguir todas las instrucciones ejecutables mediante una prueba de SQLCODE o SQLSTATE. De forma alternativa, puede utilizar la sentencia WHENEVER (que en sí misma no es ejecutable) para cambiar el flujo de control inmediatamente después de la ejecución de una sentencia incrustada.

Declaraciones no ejecutables integradas en aplicaciones

Una instrucción incrustada no ejecutable es procesada únicamente por el Db2 coprocessor o Db2 precompiler. El Db2 coprocessor o Db2 precompiler informa de cualquier error encontrado en el extracto. La instrucción nunca se ejecuta y actúa como una no operación si se coloca entre las instrucciones ejecutables del programa de aplicación. Por lo tanto, no siga tales declaraciones con una prueba de un código de retorno SQL.

1 SQLCODE y SQLSTATE no pueden estar en el SQLCA cuando la opción de procesamiento SQL STDSQL(YES) está en efecto. Véase lenguaje estándar SQL.