Variables en aplicaciones SQLJ
En los programas de aplicación escritos en otros lenguajes, utilice variables para pasar datos entre el programa de aplicación y el servidor de datos. En los programas SQLJ, puede utilizar variables de lenguaje principal o expresiones de lenguaje principal.
Una expresión de host empieza por dos puntos (:). El signo de dos puntos va seguido de un identificador de modalidad de parámetro opcional (IN, OUT o INOUT), que va seguido de una cláusula de expresión entre paréntesis.
Las variables de lenguaje principal y expresiones de lenguaje principal distinguen entre mayúsculas y minúsculas.
Una expresión compleja es un elemento de matriz o una expresión Java que se evalúa como un único valor. Las expresiones complejas contenidas en una cláusula de SQLJ deben estar delimitadas por paréntesis.
- La serie __sJT_ es un prefijo reservado que se utiliza para los
nombres de variables generados por SQLJ. No comience los siguientes
tipos de nombres con __sJT_:
- Nombres de expresiones de lenguaje principal
- Nombres de variables Java que se declaran en bloques que incluyen sentencias SQL ejecutables
- Nombres de parámetros para métodos que contienen sentencias ejecutables de SQL
- Nombres de campos en clases que contienen sentencias ejecutables de SQL, o en clases con subclases o clases incluidas que contienen sentencias ejecutables de SQL
- La serie _SJ es un sufijo reservado que se utiliza para archivos de recursos y clases que han sido creados por SQLJ. Evite utilizar la serie _SJ en nombres de clases y nombres de archivos fuente de entrada.
ejemplos
Ejemplo: Declarar un identificador Java y utilizarlo en una instrucción SELECT:
En este ejemplo, la sentencia que comienza con #sql
tiene la misma función que una sentencia SELECT en otros lenguajes de
programación. Esta declaración asigna el apellido del empleado con número de empleado 000010 al identificador Java empname.
String empname;
…
#sql [ctxt]
{SELECT LASTNAME INTO :empname FROM EMPLOYEE WHERE EMPNO='000010'};Ejemplo: Declarar un identificador Java y utilizarlo en una llamada a un procedimiento almacenado:
En este ejemplo, la sentencia que comienza con #sql
tiene la misma función que una sentencia CALL de SQL en otros
lenguajes de programación. Esta declaración utiliza el identificador Java empno como parámetro de entrada para el procedimiento almacenado A. La palabra clave IN, que precede a empno, especifica que empno es un parámetro de entrada. Para un parámetro de una sentencia CALL, el valor por omisión es
IN. El calificador explícito o por omisión que indica cómo se
utiliza el parámetro (IN, OUT o INOUT)
debe coincidir con el valor correspondiente contenido en la definición de
parámetro que ha especificado en la sentencia CREATE PROCEDURE para el
procedimiento almacenado.
String empno = "0000010";
…
#sql [ctxt] {CALL A (:IN empno)};Ejemplo: Uso de una expresión compleja como identificador de host:
Este ejemplo utiliza la expresión compleja (((int)yearsEmployed++/5)*500) como expresión de lenguaje principal.
#sql [ctxt] {UPDATE EMPLOYEE
SET BONUS=:(((int)yearsEmployed++/5)*500) WHERE EMPNO=:empID};
- Evalúa cada una de las expresiones de lenguaje principal, de izquierda a derecha, antes de asignar sus respectivos valores a la base de datos.
- Evalúa los efectos secundarios, como las operaciones con operadores postfijos, de acuerdo con las reglas normales de Java. Todas las expresiones host se evalúan totalmente antes de pasar cualquiera de sus valores al servidor de datos.
- Utiliza reglas Java para redondeo y truncamiento.