control
TRANSCRIPT
![Page 1: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/1.jpg)
PL/SQLSesión 2
Estructuras de Control
Ing. Mauricio Bedoya
![Page 2: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/2.jpg)
Estructuras de Control
Se puede cambiar el flujo lógico de declaraciones dentro del bloque de PL-SQL con un número de estructuras del control.
Existen dos tipos de estructuras del control en PL-SQL:
o Constructores condicionales (IF)
o Estructuras de control (LOOP)Existen tres formas de declarar constructores condicionales:
o IF – THEN – END – IF
o IF – THEN – ELSE – END – IFo IF – THEN – ELSEIF – END – IF
![Page 3: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/3.jpg)
Condicionales
Cláusula IF
La estructura para la cláusula IF en PL-SQL es similar a la estructura de una cláusula IF en otro lenguaje procedural. Esta cláusula permite que PL-SQL realice las acciones selectivas basadas en condiciones.
I F c o n d i c i o n T H E N d e c l a r a c i o n e s ;[ E L S E I F c o n d i c i o n T H E N d e c l a r a c i o n e s ; ][ E L S E d e c l a r a c i o n e s ; ]E N D I F
![Page 4: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/4.jpg)
Sintaxis
Sintaxis:
Condición: es una variable o una expresión booleana (TRUE, FALSE, o NULL) (se asocia a una secuencia de declaraciones, se ejecuta solamente sí la expresión es TRUE)
THEN: es una cláusula que asocia la expresión booleana que la precede con la secuencia de declaraciones que la sigue. Declaraciones: puede ser la declaración de una o más declaraciones de PL-SQL o SQL.ELSIF: es una palabra clave que introduce una expresión booleana (si la primera condición es FALSE o NULL entonces la palabra clave de ELSIF introduce condiciones adicionales.) ELSE: es una palabra clave se ejecuta si el control la alcanza, y realiza la secuencia de declaraciones que la siguen
![Page 5: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/5.jpg)
Ejemplo
Cláusula IF simple
...
IF v_ename = ‘MILLER’ THEN v_job := ‘SALESMAN’ v_deptno := 35; v_new_comm := sal * 0.20;END IF;...
En el ejemplo PL-SQL realiza 3 acciones solo si la condición es TRUE. Si la condición es FALSE o NULL, PL-SQL no hace caso de ellas. Se pueden realizar acciones basadas en condiciones que son satisfechas.
![Page 6: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/6.jpg)
ELSIF
Al escribir el código, hay que recordar el deletreo de las palabras claves:
ELSIF es una palabra.
END IF son dos palabras. Si la condición booleana que controla es TRUE, la secuencia asociada de declaraciones se ejecuta; si la condición booleana que controla es FALSE o NULL, la secuencia asociada de declaraciones no se ejecuta. Se permite cualquier número de cláusulas ELSIF. Puede haber una cláusula ELSE.
Cláusula IF – THEN – ELSE
Si la condición es FALSA o NULL, se puede usar la cláusula ELSE para realizar otras acciones.
![Page 7: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/7.jpg)
ELSIFCláusula IF – THEN – ELSE
...
IF condicion1 THEN declaracion1;ELSIF condicion2 THEN declaración2;ELSEIF declaración3;END IF;...
Cualquier acción para el resultado de la primera declaración IF puede incluir mas declaraciones IF antes de realizar acciones específicas. Las cláusulas THEN y ELSE pueden incluir declaraciones IF. Cada declaración de un IF debe terminar con un END IF.
Cláusula IF – THEN – ELSIF
Es posible utilizar la cláusula ELSIF en vez de declarar un IF. El código es más fácil de leer y de entender, y la lógica se identifica claramente. Si la acción en la cláusula ELSE consiste puramente por otra declaración IF, es más conveniente utilizar la cláusula ELSIF.
![Page 8: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/8.jpg)
CICLOS
Control Iterativo: Estatutos LOOP
PL-SQL proporcionan un número de facilidades para estructurar ciclos que permitan repetir una declaración o una secuencia para múltiples tiempos.
Las construcciones de colocación son el segundo tipo de estructura del control: LOOP básico para proporcionar acciones repetitivas sin condiciones
FOR ciclos para proporcionar el control iterativo de las acciones basadas en un contadorWHILE ciclos para proporcionar el control iterativo de las acciones basadas en una condiciónEXIT para terminar ciclos
![Page 9: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/9.jpg)
LOOP SIMPLE
LOOP básico
La forma más simple es la declaración de un LOOP básico, que incluye una secuencia de declaraciones entre las palabras claves LOOP y END LOOP. El flujo de la ejecución se termina cuando llega a una declaración END LOOP, y regresa el control a la declaración correspondiente que se refiera a este LOOP. Un loop básico permite que este sea ejecutado por lo menos una vez. Sin la declaración de EXIT, el loop sería infinito.
![Page 10: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/10.jpg)
CICLOS
La declaración EXIT
Se puede terminar un loop usando la declaración EXIT. El control pasa a la siguiente declaración después de la declaración END LOOP. Se puede publicar EXIT como cualquier otra acción dentro de una declaración IF o como declaración independiente dentro del loop. La declaración EXIT se debe poner dentro de un loop. En el último caso, se puede unir una cláusula WHEN para permitir la terminación condicional del loop. Cuando la declaración EXIT es encontrada, la condición en la cláusula WHEN es evaluada. Si la condición es TRUE, el loop se termina y pasa el control a la siguiente declaración después del loop. Un loop básico puede contener múltiples declaraciones EXIT.
![Page 11: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/11.jpg)
CICLOS
L O O P - - d e l i m i t a d o r d e c l a r a c i o n e s ; - - d e c l a r a c i o n e s . . . E X I T [ W H E N c o n d i c i o n ] ; - - E X I T d e c l a r a c i o nE N D L O O P - - d e l i m i t a d o r
d o n d e : c o n d i c i o n e s u n a v a r i a b l e b o o l e a n a o
e x p r e s i o n ( T R U E , F A L S E , N U L L )
![Page 12: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/12.jpg)
FOR LOOP
FOR LOOPFOR este loop tienen la misma estructura general que el loop básico. Además, tienen un orden de control antes de la palabra clave del ciclo para determinar el número de iteraciones que debe realizar en PL-SQL.
![Page 13: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/13.jpg)
FOR LOOP
F O R c o n t a d o r i n [ R E V E R S E ] l i m i t e _ i n f e r i o r . . l i m i t e _ s u p e r i o r L O O P d e c l a r a c i o n 1 ; d e c l a r a c i o n 2 ; . . .E N D L O O P ;
![Page 14: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/14.jpg)
SINTAXIS
Sintaxis:
contador: es un número entero implícito declarado que se incrementa o decrementa automáticamente (decrementa si se utiliza la palabra clave REVERSE) por 1 en cada iteración del loop hasta el límite superior o inferior que se indique.
REVERSE: causa opuestamente al decremento por cada iteración del límite superior o inferior.limite_inferior: especifica el límite inferior para el rango de valores del contadorlimite _superior: especifica el límite superior para la el rango valores del contador
![Page 15: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/15.jpg)
WHILE LOOP
WHILE LOOPSe puede usar el WHILE loop para repetir una declaración hasta que la condición es TRUE. La condición se evalúa en el comienzo de cada iteración. El loop termina cuando la condición es FALSE. Si la condición es FALSE en el comienzo del loop, entonces no se realiza ninguna otra iteración.
![Page 16: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/16.jpg)
WHILE LOOP
W H I L E c o n d i c i o n L O O P d e c l a r a c i o n 1 ; d e c l a r a c i o n 2 ; . . .E N D L O O P ;
![Page 17: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/17.jpg)
WHILE LOOP
Sintaxis:
condicion: es una variable o una expresión booleana (TRUE, FALSE, o NULL).
declaracion: puede ser uno o más declaraciones PL-SQL o SQL.Si las variables implicadas en las condiciones no cambian durante el cuerpo del loop, entonces la condición siguen siendo TRUE y el loop no termina. Si la condición es NULL, el loop sobrepasado y pasa el control a la siguiente declaración.
![Page 18: Control](https://reader038.vdocuments.pub/reader038/viewer/2022100501/559a1f2d1a28ab727b8b47cf/html5/thumbnails/18.jpg)
Ejemplos
Escriba un script con el siguiente ejemplo:
Declarev_c Binary_integer:=1:BEGINWhile v_c <=50 LOOPINSERT INTO TEMPORALVALUES(v_c, 'Indice del bucle');v_c:=v_c+1;END LOOP;END;/
Describa que hace el script.