A instrução SET avalia sourceexpression e atribui o valor resultante à entidade identificada por target.
O destino pode ser uma variável declarada ou um campo em uma árvore de mensagens que pode ser modificada, por exemplo Environment, InputLocalEnvironment, OutputLocalEnvironment, OutputRoot ou OutputExceptionList.
Se o destino for uma variável declarada, omita as cláusulas TYPE, NAME, NAMESPACE e VALUE. A expressão de origem deve retornar um valor escalar de um tipo igual ao tipo de dados declarado da variável ou que possa ser convertido nesse tipo. Os valores NULL são tratados exatamente da mesma maneira que qualquer outro valor.
Se o destino for um campo, ele será navegado (criando os campos, se necessário) e seu valor será definido de acordo com um conjunto de regras, que dependem da presença ou ausência das cláusulas TYPE, NAME, NAMESPACE ou VALUE e do tipo de dados retornados pela expressão de origem.
SET OutputRoot.XML.Message.Structure[2].Field = ...pelo menos uma instância de Structure já deve existir na mensagem. Ou seja, os únicos campos na árvore que são criados são em um caminho direto da raiz para o campo identificado pela referência de campo.
Se uma cláusula TYPE estiver presente, o tipo do campo de destino será alterado para aquele retornado por sourceexpression. Uma exceção é lançada se o resultado não for escalar, não for do tipo INTEGER ou for NULL.
Se uma cláusula NAMESPACE estiver presente, o espaço de nomes do elemento será definido. Definir o espaço de nomes de um elemento define automaticamente seu sinalizador NAME.
Se uma cláusula NAME estiver presente, o nome do campo de destino será alterado para aquele retornado por sourceexpression. Uma exceção é lançada se o resultado não for escalar, não for do tipo CHARACTER ou for NULL.
Se uma cláusula VALUE estiver presente, o valor do campo de destino será alterado para aquele retornado por sourceexpression. Uma exceção é emitida se o resultado não for escalar.
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.
Caso o campo Order.Name não exista 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;
Conceitos relacionados
ESQL
Tarefas relacionadas
Desenvolvendo ESQL
Acessando Elementos no Corpo da Mensagem
Referências relacionadas
Preferência de Sintaxe
instruções ESQL
Avisos |
Marcas |
Downloads |
Biblioteca |
Suporte |
Feedback
![]() ![]() |
ak05140_ |