Una variable ESQL es un campo
de datos que se utiliza para ayudar a procesar un mensaje.
Debe declarar una variable e indicar su tipo antes de utilizarla. El tipo de datos de una variable es fijo; si codifica ESQL que asigne un valor de un tipo diferente, se implementa una transformación CAST al tipo de datos del destino o se genera una excepción (si no se da soporte a la transformación CAST implícita).
Para definir una variable y darle un nombre, utilice la
sentencia DECLARE.
Los nombres de las variables ESQL distinguen entre mayúsculas y
minúsculas, por lo tanto, asegúrese de que utiliza siempre las mayúsculas y minúsculas correctas. La manera más fácil de asegurarse de
que está utilizando las mayúsculas y minúsculas correctas es definir siempre las variables utilizando nombres en
mayúsculas.
El WebSphere Message Broker Toolkit marca las variables que no se han definido. Elimine todas
estas marcas antes de desplegar un flujo de mensajes.
Puede
asignar un valor inicial a la variable en la sentencia DECLARE. Si no se especifica un valor inicial, las
variables escalares se inicializan con el valor especial NULL, mientras que
las variables ROW se inicializan con un estado vacío. A continuación, puede cambiar el valor de una variable utilizando la sentencia SET.
Las variables ESQL declaradas en el nivel de módulo 'pertenecen' a un único nodo. sin
embargo, las variables declaradas en el nivel de esquema también se proporcionan
a cada nodo que hace referencia al esquema. Por lo tanto, aunque las variables del
nivel de esquema sólo se declaran una vez, cada nodo ESQL tiene su propia copia, que
no se comparte con ningún otro nodo (a menos que la variable se marque con SHARED).
Tres tipos de nodos incorporados pueden contener código ESQL y, por
lo tanto, soportar el uso de variables
ESQL:
Ámbito, duración y características de
compartimiento de las variables
El ámbito, la duración y las características de compartimiento de las variables describen la extensión y la duración de la disponibilidad de una variable ESQL:
- Ámbito
- Es una medida del rango en el que una variable es visible. En el entorno de intermediario, el ámbito de las
variables normalmente está limitado al nodo individual.
- Duración
- Es una medida del tiempo durante el cual una variable conserva su valor. En el entorno de intermediario, la duración de las variables varía pero suele estar limitada a la duración de una hebra en
un nodo.
- Características de compartimiento
- indican si cada hebra tiene su propia copia de una variable o si se comparte una variable entre muchas hebras. En el entorno de intermediario, normalmente las
variables no se comparten.
Tipos de variables
- Externas
- Las variables externas (definidas con la palabra clave EXTERNAL)
también se conocen como propiedades definidas por el usuario,
consulte Propiedades definidas por el usuario en ESQL. Estas variables existen
mientras está activo un flujo de mensajes y son visibles para todos los
mensajes que pasan a través del flujo de mensajes. Puede definir variables
externas sólo a nivel de módulo y esquema. Puede modificar los valores
iniciales de las variables externas (opcionalmente establecidos mediante la sentencia
DECLARE) durante el diseño, utilizando el Editor de flujos de mensajes o,
durante el despliegue, utilizando el Editor de archivador de intermediario. Puede consultar y establecer los valores de las propiedades definidas por el usuario en tiempo de ejecución utilizando el API de Message Broker (que también se conoce como API de CMP). Para obtener más información, consulte
Establecimiento de las propiedades definidas por el usuario en tiempo de ejecución en una aplicación CMP.
- Normal
- Las variables normales tienen una duración de sólo un mensaje
que pase por un nodo. Sólo son visibles para ese mensaje. Para definir
variables normales, omita las palabras clave EXTERNAL y SHARED.
- Compartidas
- Las variables compartidas pueden utilizarse para implementar una
memoria caché interna en el flujo de mensajes, consulte Optimizar los tiempos de respuesta de los flujos de mensajes. Las variables compartidas
tienen una larga duración y son visibles para múltiples mensajes que pasan
por un flujo, consulte Variables de larga duración. La duración de las variables compartidas es la del proceso del grupo de ejecución, la duración del flujo o nodo, o bien la duración del SQL del nodo que declara la variable (la que sea
más breve). Las variables compartidas se inicializan cuando el primer mensaje pasa por el flujo o el
nodo después de cada inicio de intermediario.
Consulte también la
opción ATOMIC de la Sentencia BEGIN ... END.
La construcción BEGIN ATOMIC es útil cuando deben realizarse varios
cambios en una variable compartida y es importante evitar que otras
instancias vean los estados intermedios de los datos.