La sentencia SET asigna un valor a una variable.
ExpresiónOrigen es una expresión que proporciona el valor que se debe asignar. Puede ser cualquier tipo de expresión y puede devolver un valor escalar, de fila o de lista.
Si el destino es una variable escalar declarada, se evalúa ExpresiónOrigen y se asigna a la variable. Si es necesario, su valor se convierte al tipo de datos de la variable. Si esta conversión no es posible, habrá un error en tiempo de despliegue o una excepción en tiempo de ejecución.
Los valores Null se manejan exactamente del mismo modo que cualquier otro valor. Es decir, si la expresión se evalúa en Null, se asigna el valor "null" a la variable.
Para las variables escalares, las cláusulas TYPE, NAME, NAMESPACE y VALUE no tienen sentido y no se permiten.
Si el destino es una variable de fila declarada, una de las variables de fila predefinidas, un campo dentro de cualquier tipo de variable de fila, una lista de campos dentro de cualquier variable de fila, o una variable de referencia declarada que apunta a cualquiera de estos elementos, el destino final es un campo. En estos casos, se navega al campo de destino (creando los campos, si fuera necesario).
Si se utilizan índices de matriz en ReferenciaCampoDestino, la navegación al campo de destino sólo puede crear campos en la vía de acceso directa desde el elemento raíz al campo de destino. Por ejemplo, la siguiente sentencia SET requiere que ya exista en el mensaje una instancia, como mínimo, de Structure:
SET OutputRoot.XML.Message.Structure[2].Field = ...
Para obtener más información sobre cómo trabajar con elementos de tipo list, consulte Cómo trabajar con elementos de tipo xsd:: list
SET OutputRoot = InputRoot; SET OutputRoot.XML.Order.Name = UPPER(InputRoot.XML.Order.Name);
Este ejemplo coloca un campo en el mensaje en mayúsculas. La primera sentencia crea 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 se ha definido mediante 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 generado por la primera sentencia. La expresión de la derecha de la segunda sentencia devuelve NULL (debido a que el campo al que se hace referencia en la llamada a la función UPPER no existe). Asignar el valor NULL a un campo tiene el efecto de suprimirlo si éste ya existe y, como resultado, la segunda sentencia no tiene efecto alguno.
SET OutputRoot.XML.Order.Name VALUE = NULL;