Instrução BEGIN ... END

A instrução BEGIN ... END fornece às instruções definidas nas palavras-chave BEGIN e END o status de uma instrução única.

Isso permite às instruções tornarem-se o corpo de uma função ou um procedimento.

Sintaxe

O segundo Rótulo pode estar presente apenas se o primeiro Rótulo estiver presente e os rótulos devem ser idênticos. Duas ou mais instruções rotuladas no mesmo nível podem ter o mesmo Rótulo, mas isso nega parcialmente a vantagem de um segundo Rótulo. A vantagem é que os rótulos correspondem a cada END com o seu BEGIN de maneira não ambígua e precisa. Porém, uma instrução rotulada dentro de instruções não pode ter o mesmo Rótulo, porque isso torna o comportamento das instruções ITERATE e LEAVE ambíguos.

Você pode considerar a instrução BEGIN ... END como sendo uma construção em loop, que sempre entra em loop apenas uma vez. O efeito de um ITERATE ou LEAVE em uma instrução BEGIN ... END é o mesmo; o controle é transferido para a instrução após END. Utilizar ITERATE ou LEAVE em uma instrução BEGIN ... END é útil nos casos em que existe uma longa série de cálculos que precisam ser abandonados, porque um resultado limitado foi alcançado ou porque ocorreu um erro.

Um novo escopo de variável local é aberto imediatamente após a abertura de BEGIN e, portanto, quaisquer variáveis declaradas nesta instrução ficam fora de escopo quando é alcançado o END de finalização. Se uma variável local tiver o mesmo nome que uma variável existente, quaisquer referências a esse nome, que ocorrem após a instrução, acessam a variável local. Por exemplo:
DECLARE Variable1 CHAR 'Existing variable';

-- A reference to Variable1 here returns 'Existing variable'

  BEGIN
  -- A reference to Variable1 here returns 'Existing variable'

    DECLARE Variable1 CHAR 'Local variable';  -- Perfectly legal even though
the name is the same

    -- A reference to Variable1 here returns 'Local variable'
  END;

Conceitos relacionados
ESQL

Tarefas relacionadas
Desenvolvendo ESQL

Referências relacionadas
Preferência de Sintaxe
instruções ESQL