A instrução SET designa um valor a uma variável.
SourceExpression é uma expressão que fornece o valor a ser designado. Pode ser qualquer tipo de expressão e pode retornar um valor escalar, de linha ou de lista.
Se o destino for uma variável escalar declarada, SourceExpression será avaliado e designado para a variável. Se necessário, seu valor será convertido para o tipo de dados da variável. Se essa conversão não for possível,haverá um erro no tempo de implementação ou uma exceção no tempo de execução.
Os valores nulos são manipulados exatamente da mesma maneira que qualquer outro valor. Ou seja, se a expressão for avaliada para nulo, o valor "null" será designado à variável.
Para variáveis escalares, as cláusulas TYPE, NAME, NAMESPACE e VALUE são inexpressivas e não são permitidas.
Se o destino for uma variável de linha declarada, uma das variáveis de linha predefinidas, um campo dentro de qualquer tipo de variável de linha, uma lista de campos dentro de qualquer tipo de variável de linha ou uma variável de referência declarada que aponte para qualquer um destes, o destino final será um campo. Nestes casos, navegando para o campo de destino (criando os campos, se necessário).
Se índices de matriz forem utilizados em TargetFieldReference, a navegação para o campo de destino poderá criar campos apenas no caminho direto da raiz para o campo de destino. Por exemplo, a instrução SET a seguir requer que pelo menos uma instância de Structure já exista na mensagem:
SET OutputRoot.XML.Message.Structure[2].Field = ...
Para obter informações adicionais sobre como trabalhar com elementos de tipo list, consulte Trabalhando com Elementos de Tipo xsd:: list
SET OutputRoot = InputRoot; SET OutputRoot.XML.Order.Name = UPPER(InputRoot.XML.Order.Name);
Este exemplo põe um campo da mensagem em letras maiúsculas. A primeira instrução constrói uma mensagem de saída que é uma cópia completa da mensagem de entrada. A segunda instrução define o valor do campo Order.Name para um novo valor, conforme definido pela expressão à direita.
Se o campo Order.Name não existir na mensagem de entrada original, ele não existirá na mensagem de saída gerada pela primeira instrução. A expressão da direita da segunda instrução retorna NULL (porque o campo mencionado dentro da chamada da função UPPER não existe). Designar o valor NULL a um campo tem o efeito de excluí-lo se ele já existir, portanto, a segunda instrução não terá efeito.
SET OutputRoot.XML.Order.Name VALUE = NULL;