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.
- 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)
- 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.