La sentencia SET evalúa expresión_origen y asigna el valor resultante a la entidad identificada por destino.
El destino puede ser una variable declarada o un campo de un árbol de mensajes que se puede modificar; por ejemplo, Environment, InputLocalEnvironment, OutputLocalEnvironment, OutputRoot o OutputExceptionList.
Si el destino es una variable declarada, omita las cláusulas TYPE, NAME, NAMESPACE y VALUE. La expresión de origen debe devolver un valor escalar de un tipo que sea el mismo que el tipo de datos declarado de la variable, o que se pueda convertir a éste. Los valores NULL se manejan exactamente de la misma manera que cualquier otro valor.
Si el destino es un campo, se navega al mismo (creando los campos si es necesario) y su valor se establece de acuerdo a un conjunto de normas que dependen de la presencia o ausencia de las cláusulas TYPE, NAME, NAMESPACE o VALUE y el tipo de datos devuelto por la expresión de origen.
SET OutputRoot.XML.Message.Structure[2].Field = ...debe existir al menos una instancia de Estructura en el mensaje. Es decir, los únicos campos del árbol que se crean son los que están en una vía de acceso directa desde la raíz al campo identificado por la referencia de campo.
Si una cláusula TYPE está presente, el tipo del campo de destino se cambia por el devuelto por expresión_origen. Se emite una excepción si el resultado no es escalar, no es del tipo INTEGER, o es NULL.
Si una cláusula NAMESPACE está presente, se establece el espacio de nombres del elemento. Al establecer el espacio de nombres de un elemento se establece automáticamente su distintivo NAME.
Si una cláusula NAME está presente, el nombre del campo de destino se cambia por el devuelto por expresión_origen. Se emite una excepción si el resultado no es escalar, no es del tipo CHARACTER, o es NULL.
Si una cláusula VALUE está presente, el valor del campo de destino se cambia por el devuelto por expresión_origen. Se emite una excepción si el resultado no es escalar.
SET OutputRoot = InputRoot; SET OutputRoot.XML.Order.Name = UPPER(InputRoot.XML.Order.Name);
Este ejemplo convierte el texto de un campo del mensaje a mayúsculas. La primera sentencia construye un mensaje de salida que es una copia completa del mensaje de entrada. La segunda sentencia establece el valor del campo Order.Name en un valor nuevo, como lo define la expresión de la derecha.
Si el campo Order.Name no existe en el mensaje de entrada original, no existe en el mensaje de salida tal como lo genera la primera sentencia. La expresión de la derecha de la segunda sentencia devuelve NULL (porque el campo referenciado dentro de la llamada a la función UPPER no existe). Asignar el valor NULL a un campo tiene el efecto de suprimirlo si ya existe y, por tanto, el efecto es que la segunda sentencia no tiene efectos.
SET OutputRoot.XML.Order.Name VALUE = NULL;
Conceptos relacionados
ESQL
Tareas relacionadas
Desarrollo de ESQL
Acceso a elementos en el cuerpo del mensaje
Referencia relacionada
Preferencia de sintaxis
Sentencias ESQL
Avisos |
Marcas registradas |
Descargas |
Biblioteca |
Soporte |
Información de retorno (feedback)
![]() ![]() |
ak05140_ |