Instrução PROPAGATE

A instrução PROPAGATE propaga a mensagem de entrada para nós downstream no fluxo de mensagens.

Sintaxe

Quando utilizada em um nó Compute, a instrução PROPAGATE finaliza as árvores da mensagem de saída do nó (ou seja, corrige suas cadeias de cabeçalho) e propaga para os nós downstream no fluxo de mensagens. A instrução PROPAGATE então limpa as árvores da mensagem de saída e recupera a memória pronta para utilização adicional.

A árvore de Ambiente é sempre propagada. As árvores Ambiente Local, de mensagem e lista de exceções que são propagadas podem ser árvores tanto de entrada como de saída sob o controle da propriedade Compute Mode como normal. No entanto, isto são as árvores de saída que são finalizadas e limpas, independentemente de quais foram propagadas.

Por padrão, o nó Compute propaga automaticamente para os nós abaixo dele quando seu ESQL é encerrado. Para evitar isso, faça com que o ESQL retorne FALSE (consulte Instrução RETURN).

Quando utilizado em um nó Database, a instrução PROPAGATE se comporta de forma semelhante. Propaga a mensagem de entrada para os nós downstream no fluxo de mensagens. Por padrão, o nó Database também propaga automaticamente para os nós abaixo dele quando seu ESQL é encerrado. Isso pode ser evitado fazendo com que o ESQL retorne FALSE (consulte Instrução RETURN).

Não utilize a instrução PROPAGATE dentro de nós Filter.

Quando se utiliza a instrução PROPAGATE, o caminho seguido pela mensagem como conseqüência e o processamento que é aplicado a ela pelos nós seguintes são considerados parte do processamento da própria instrução PROPAGATE. A execução do nó que emite o PROPAGATE não é concluída até que o controle tenha retornado e o ESQL tenha se encerrado. Se você utilizar PROPAGATE em um nó que tenha Transaction definido como Commit, todas as atualizações do banco de dados que tiverem sido feitas nesse nó não serão consolidadas até que o ESQL se encerre. Portanto, se o processamento no caminho de PROPAGATE resultar em uma exceção e se o fluxo de mensagens reverter sua unidade de trabalho, a atividade do banco de dados também será revertida.

O ESQL neste exemplo produz três mensagens no terminal OUT utilizando a mensagem de amostra em Mensagem de Exemplo:

DECLARE i INTEGER 1;

WHILE i <= CARDINALITY(InputRoot.XML.Invoice.Purchases."Item"[])
DO
    SET OutputRoot = InputRoot;
        SET OutputRoot.XML = NULL;
    SET OutputRoot.XML.BookSold."Item" =
InputRoot.XML.Invoice.Purchases."Item"[i];
        PROPAGATE;
      SET i = i + 1;
END WHILE;
RETURN FALSE;

Aqui estão as mensagens produzidas no terminal OUT pela instrução PROPAGATE:

<BookSold>
    <Item>
  <Title Category="Computer" Form="Paperback" Edition="2">The XML
Companion </Title>
        <ISBN>0201674866</ISBN>
        <Author>Neil Bradley</Author>
        <Publisher>Addison-Wesley</Publisher>
        <PublishDate>October 1999</PublishDate>
        <UnitPrice>27.95</UnitPrice>
        <Quantity>2</Quantity>
      </Item>
</BookSold>
<BookSold>
    <Item>
  <Title Category="Computer" Form="Paperback" Edition="2">A
Complete Guide to
   DB2 Universal Database</Title>
        <ISBN>1558604820</ISBN>
        <Author>Don Chamberlin</Author>
        <Publisher>Morgan Kaufmann Publishers</Publisher>
        <PublishDate>April 1998</PublishDate>
        <UnitPrice>42.95</UnitPrice>
        <Quantity>1</Quantity>
      </Item>
</BookSold>
<BookSold>
    <Item>
  <Title Category="Computer" Form="Hardcover" Edition="0">JAVA 2
Developers Handbook</Title>
        <ISBN>0782121799</ISBN>
  <Author>Phillip Heller, Simon Roberts </Author>
        <Publisher>Sybex, Inc.</Publisher>
  <PublishDate>September 1998</PublishDate>
<UnitPrice>59.99</UnitPrice>
        <Quantity>1</Quantity>
      </Item>
</BookSold>

Conceitos relacionados
ESQL

Tarefas relacionadas
Desenvolvendo ESQL
Gerando Várias Mensagens de Saída
Consolidando Atualizações do Banco de Dados

Referências relacionadas
Preferência de Sintaxe
instruções ESQL
Instrução RETURN
Mensagem de Exemplo