Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Usando CONTINUE em loops para retomar o controle no Oracle

A instrução CONTINUE em loops encerra a iteração atual de um loop incondicionalmente e transfere o controle para a próxima iteração do loop atual ou de um loop rotulado envolvente. No exemplo abaixo, a instrução CONTINUE dentro da instrução LOOP básica transfere o controle incondicionalmente para a próxima iteração do loop atual.
DECLARE
x NUMBER :=0;
BEGIN
LOOP -- Após a instrução CONTINUE, o controle continua aqui
DBMS_OUTPUT.PUT_LINE('Loop interno:x =' || TO_CHAR (x ));
x :=x + 1;

IF x <3 -- em vez disso se end if condição para continuar você pode usar também CONTINUE When x <3;
THEN
CONTINUE;
END IF;

DBMS_OUTPUT.PUT_LINE (
'Loop interno, após CONTINUE:x =' || TO_CHAR (x));
EXIT WHEN x =5;
END LOOP;

DBMS_OUTPUT.PUT_LINE(' Após loop:x =' || TO_CHAR (x));
END;
/
A saída do bloco acima deve ser algo assim:

Loop interno:x =0
Loop interno:x =1
Loop interno:x =2
Loop interno, após CONTINUAR:x =3
Loop interno:x =3
Loop interno, após CONTINUE:x =4
Loop interno:x =4
Loop interno, após CONTINUE:x =5
Após loop:x =5