Instrução SET

A instrução SET designa um valor a uma variável.

SINTAXE

Apresentação

TargetFieldReference identifica o destino da designação. O destino pode ser um dos seguintes:
  • Uma variável escalar declarada
  • Uma variável de linha declarada
  • Uma das variáveis de linha predefinidas (por exemplo, InputRoot)
  • Um campo dentro de qualquer tipo de variável de linha (ou seja, uma subárvore ou linha conceitual)
  • Uma lista de campos dentro de qualquer tipo de variável de linha (ou seja, uma lista conceitual)
  • Uma variável de referência declarada que aponte para qualquer um dos mencionados acima
O destino não pode ser nenhum tipo de entidade do banco de dados.

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.

Designação a Variáveis Escalares

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.

Designação a Linhas, Listas e Campos

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 = ...  
O valor do campo de destino é configurado de acordo com um conjunto de regras, com base em:
  1. A presença ou ausência das cláusulas TYPE, NAME, NAMESPACE ou VALUE
  2. O tipo de dados retornado pela expressão de origem
  1. Se nenhuma cláusula TYPE, NAME, NAMESPACE ou VALUE estiver presente (que é o caso mais comum) o resultado dependerá se SourceExpression for avaliado para um escalar, linha ou lista:
    • Se SourceExpression for avaliado para um escalar, o valor do campo de destino será configurado para o valor retornado por SourceExpression, exceto que, se o resultado for nulo, o campo de destino será descartado. Observe que o novo valor do campo pode não ser do mesmo tipo de dados que seu valor anterior.
    • Se SourceExpression for avaliado para uma linha:
      1. O campo de destino será identificado.
      2. O valor do campo de destino será configurado.
      3. Os campos filhos do campo de destino serão substituídos por um novo conjunto, determinado pela estrutura e pelo conteúdo da lista.
    • Se SourceExpression for avaliado para uma lista:
      1. O conjunto de campos de destino será identificado na árvore de destino.
      2. Se houver poucos campos de destino, outros serão criados; se houver muitos, os extras serão removidos.
      3. Os valores dos campos de destino serão configurados.
      4. Os campos filhos dos campos de destino serão substituídos por um novo conjunto, determinado pela estrutura e pelo conteúdo da lista.

      Para obter informações adicionais sobre como trabalhar com elementos de tipo list, consulte Trabalhando com Elementos de Tipo xsd:: list

  2. Se uma cláusula TYPE estiver presente, o tipo do campo de destino será configurado para o valor retornado por SourceExpression. Uma exceção será emitida se o valor retornado não for escalar, se não for do tipo INTEGER ou for NULL.
  3. Se uma cláusula NAMESPACE estiver presente, o espaço de nomes do campo de destino será configurado para o valor retornado por SourceExpression. Uma exceção será emitida se o valor retornado não for escalar, se não for do tipo CHARACTER ou for NULL.
  4. Se uma cláusula NAME estiver presente, o nome do campo de destino será configurado para o valor retornado por SourceExpression. Uma exceção será emitida se o valor retornado não for escalar, se não for do tipo CHARACTER ou for NULL.
  5. Se uma cláusula VALUE estiver presente, o valor do campo de destino será alterado para aquele retornado por SourceExpression. Uma exceção será emitida se o valor retornado não for escalar.

Notes

Instruções SET são particularmente úteis em nós Compute que modificam uma mensagem, seja alterando um campo ou incluindo um novo campo na mensagem original. As instruções SET também são úteis nos nós Filter e Database para configurar as variáveis declaradas ou os campos na árvore Ambiente ou nas árvores Ambiente Local. Você pode utilizar instruções, como esta em um nó Compute que modifica uma mensagem:
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.

Se você desejar designar um valor NULL a um campo sem excluí-lo, utilize uma instrução como esta:
 SET OutputRoot.XML.Order.Name VALUE = NULL;
Conceitos relacionados
Visão Geral do ESQL
Tarefas relacionadas
Desenvolvendo ESQL
Acessando Elementos no Corpo da Mensagem
Referências relacionadas
Diagramas de Sintaxe: Tipos Disponíveis
instruções ESQL
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback
Direitos Autorais IBM Corporation 1999, 2006 Última Atualização: 1 Sep 2006
ak05140_