A instrução WHILE avalia uma expressão de condição e, se ela for TRUE, executa uma seqüência de instruções.
>>-+-| While |----------------------+-------------------------->< '-Label--:--| While |--+-------+-' '-Label-' While |--WHILE--condição--DO--instruções--END WHILE-------------------|
A instrução WHILE repete as etapas especificadas no DO, desde que condition seja TRUE. Você é responsável por garantir que a lógica do programa seja tal que o loop termine. Se a condição resultar em UNKNOWN, o loop termina imediatamente.
Se presente, Label fornecerá um nome à instrução. Isso não tem efeito sobre o comportamento da instrução WHILE em si, mas permite que as instruções incluam instruções ITERATE e LEAVE ou outras instruções rotuladas, que por sua vez as incluem. O segundo Label pode estar presente somente se o primeiro Label estiver presente e, se estiver, devem ser idênticos. Não é um erro se duas ou mais instruções rotuladas no mesmo nível tiverem o mesma Label, mas isso nega parcialmente a vantagem do segundo Label. A vantagem é que corresponde cada END com o seu WHILE de maneira não ambígua e precisa. No entanto, é um erro que uma instrução rotulada dentro de instruções tenha o mesmo rótulo, porque isso torna ambíguo o comportamento das instruções ITERATE e LEAVE.
DECLARE i INTEGER;
SET i = 1;
X : WHILE i <= 3 DO
...
SET i = i + 1;
END WHILE X;