Una variable ESQL es un campo
de datos utilizado 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.
Nota: Los nombres de las variables ESQL distinguen entre mayúsculas y
minúsculas, por lo que es importante asegurarse de utilizar el tipo de
letra correcto en todos los sitios. La manera más fácil de garantizar
esto es definir siempre las variables utilizando nombres en
mayúsculas.
El kit de herramientas de
Message Broker indica, mediante marcas de aviso, las
variables que no se han definido. Es una buena práctica eliminar 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. Posteriormente,
puede cambiar el valor de las variables utilizando la sentencia SET.
Hay tres tipos de nodos incorporados que
pueden contener código ESQL y, por tanto, soportar el uso de variables
ESQL:
Ámbito, duración y
compartimiento de una variable
La extensión y duración de una
variable de ESQL específica viene indicada por su ámbito, duración y
compartimiento:
El ámbito de una variable es una medida del rango en el que
es visible. En el entorno de intermediario, el ámbito de las
variables normalmente está limitado al nodo individual.
La duración de una variable es una medida del tiempo durante
el que conserva su valor. En el entorno de intermediario, la duración de
una variable varía pero suele estar limitada a la duración de una hebra en
el nodo.
Las características de compartimiento de una
variable indican si cada hebra tiene su propia copia de la
variable o si se comparte una variable entre muchas hebras. En el entorno de intermediario, normalmente las
variables no se comparten.
Tipos de variables
Puede
utilizar las
Sentencia DECLARE para definir tres tipos de
variables:
- Externa
- Las variables externas (definidas con la palabra clave
EXTERNAL) también se denominan
propiedades definidas por el usuario (UDP):
vea Propiedades definidas por el usuario en ESQL.
Existen mientras está activo un flujo de mensajes y son
visibles para todos los mensajes que pasan a través del flujo de mensajes. Sus valores iniciales (opcionalmente establecidos mediante la sentencia
DECLARE) pueden modificarse, en el tiempo de diseño, mediante el editor de
flujos de mensajes o, en el tiempo de despliegue, mediante el editor BAR. Estos
valores no pueden modificarse mediante ESQL.
- Normal
- Las variables "normales" tienen una duración de sólo un mensaje
que pase por el nodo. Sólo son visibles a ese mensaje. Para definir una
variable "normal", omita las palabras clave EXTERNAL y SHARED.
- Compartida
- 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
gran duración y son visibles para múltiples mensajes que pasan por un
flujo, consulte Variables de larga duración. Su duración es la
misma que el proceso del grupo de ejecución, la duración del flujo o nodo,
o la duración del SQL del nodo que declara la variable (el que sea menor).
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.
Para obtener información sobre los tipos específicos de variables,
consulte: