control

Post on 06-Jul-2015

484 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

PL/SQLSesión 2

Estructuras de Control

Ing. Mauricio Bedoya

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

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

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

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.

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.

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.

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

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.

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.

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 )

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.

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 ;

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

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.

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 ;

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.

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.

top related