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 entorno de trabajo 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. Posteriormente,
puede cambiar el valor de las variables utilizando la sentencia SET.
Tres tipos de nodos incorporados pueden contener código ESQL y, por
lo 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 está típicamente 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.
- as 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
- 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. Sólo puede definir variables externas a nivel de módulo y esquema. Puede modificar los valores iniciales de las mismas (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.
No puede modificar posteriormente sus valores utilizando ESQL.
- 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 una variable normal, 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 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 la del 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 (la que sea
más breve). 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: