Está en la página 1de 14

Programación de bases de datos con

PL / SQL
4-5
Control iterativo: bucles anidados

Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos.


Objetivos
• Esta lección cubre los siguientes objetivos:
-Construya y ejecute PL / SQL usando bucles anidados
-Etiquete los bucles y use las etiquetas en las declaraciones EXIT
-Evaluar una construcción de bucle anidado e identificar el punto de salida

PLSQL 4-5
Control iterativo: bucles anidados
Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. 3
Propósito

• Ha aprendido acerca de las construcciones en bucle en PL / SQL


• Esta lección analiza cómo se pueden anidar bucles en
varios niveles.
• Puede anidar FOR, WHILE y bucles básicos entre

PLSQL 4-5
Control iterativo: bucles anidados
Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. 4
Ejemplo de bucle anidado

• En PL / SQL, puede anidar bucles en varios niveles


• Puede anidar FOR, WHILE y bucles básicos entre

COMENZAR

PARA v_outerloop EN 1..3 BUCLE


FOR v_innerloop IN REVERSE 1..5 LOOP
DBMS_OUTPUT.PUT_LINE ('El bucle externo es:' ||
v_outerloop ||
'y el bucle interior es:' ||
v_innerloop);
END LOOP;
END LOOP;
FIN;

PLSQL 4-5
Control iterativo: bucles anidados
Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. 5
Bucles anidados

• Este ejemplo contiene condiciones EXIT en bucles básicos


anidados
• ¿Qué sucede si desea salir del bucle exterior en el paso A?
DECLARAR
v_outer_done CHAR (3): = 'NO';
v_inner_done CHAR (3): = 'NO';
COMENZAR

LAZO - - lazo exterior


...
LAZO - - lazo interior
...
... - - paso A
SALIR CUANDO v_inner_done = 'SÍ';
...
END LOOP;
...
SALIR CUANDO v_outer_done = 'SÍ';
...
END LOOP;
FIN;

PLSQL 4-5
Control iterativo: bucles anidados
Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. 6
Etiquetas de bucle

• Las etiquetas de bucle son necesarias en este ejemplo para salir


un bucle exterior desde dentro de un bucle interior
DECLARAR
...
COMENZAR

<<outer_loop>>
LAZO - - lazo exterior
...
<<inner_loop>>
LAZO - - lazo interior
SALIDA bucle_externo CUANDO ... - sale de ambos bucles
SALIR CUANDO v_inner_done = 'SÍ';
...
END LOOP;
...
SALIR CUANDO v_outer_done = 'SÍ'; END ...
LOOP;
FIN;

PLSQL 4-5
Control iterativo: bucles anidados
Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. 7
Etiquetas de bucle

• Los nombres de las etiquetas de bucle siguen las mismas reglas que otros
identificadores

• Se coloca una etiqueta antes de una declaración, ya sea en la


misma línea o en una línea separada

• En los bucles FOR o WHILE, coloque la etiqueta antes de FOR o WHILE


dentro de los delimitadores de etiquetas (<<label>>)

• Si el bucle está etiquetado, el nombre de la etiqueta se puede incluir


opcionalmente después de la declaración END LOOP para mayor claridad.

PLSQL 4-5
Control iterativo: bucles anidados
Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. 8
Etiquetas de bucle

• Etiquete los bucles básicos colocando la etiqueta antes de la palabra LOOP


dentro de los delimitadores de etiquetas (<<label>>)
DECLARAR
v_outerloop PLS_INTEGER: = 0;
v_innerloop PLS_INTEGER: = 5;
COMENZAR

<<outer_loop>>
LAZO
v_outerloop: = v_outerloop + 1;
v_innerloop: = 5;
SALIR CUANDO v_outerloop> 3;
<<inner_loop>>
LAZO
DBMS_OUTPUT.PUT_LINE ('El bucle externo es:' || v_outerloop ||
'y el bucle interior es:' || v_innerloop);
v_innerloop: = v_innerloop - 1; SALIR
CUANDO v_innerloop = 0; FIN DE BUCLE
bucle_interior; FIN DE BUCLEbucle_externo;
FIN;

PLSQL 4-5
Control iterativo: bucles anidados
Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. 9
Lazos y etiquetas anidados
• En este ejemplo, hay dos bucles
• El bucle externo se identifica con la etiqueta
<<outer_loop>>, y el bucle interno se identifica con el
etiqueta <<inner_loop>>
• Hacemos referencia al bucle externo en la declaración EXIT
desde dentro del
bucle_interior

PLSQL 4-5
Control iterativo: bucles anidados
Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. 10
Lazos y etiquetas anidados

. . . COMENZAR
<<outer_loop>>
LAZO
contador_v: = contador_v + 1;
SALIR CUANDO v_counter> 10;
<<inner_loop>>
LAZO . . .
SALIDA bucle_externo CUANDO v_total_done = 'SÍ';
- - Deja ambos bucles
SALIR CUANDO v_inner_done = 'SÍ';
- - Deje solo el bucle interior. . .
FIN DE BUCLE bucle_interior; . . .
FIN DE BUCLE bucle_externo
; FIN;

PLSQL 4-5
Control iterativo: bucles anidados
Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. 11
Terminología
• Los términos clave utilizados en esta lección incluyen:
-Delimitadores de etiquetas

-Etiqueta de bucle

PLSQL 4-5
Control iterativo: bucles anidados
Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. 12
Resumen
• En esta lección, debería haber aprendido a:
-Construya y ejecute PL / SQL usando bucles anidados
-Etiquete los bucles y use las etiquetas en las declaraciones EXIT
-Evaluar una construcción de bucle anidado e identificar el punto de salida

PLSQL 4-5
Control iterativo: bucles anidados
Copyright © 2020, Oracle y / o sus afiliados. Reservados todos los derechos. 13

También podría gustarte