E STRUCTURAS C ONTROL PL/SQL
Csar Martnez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC
I NTRODUCCIN
En PL/SQL existen estructuras que controlan el flujo de la informacin
E STRUCTURA DE C ONTROL IF
Sintxis:
IF <condicin> THEN -- Cdigo ELSIF <condicin> THEN -- Cdigo ELSE -- Cdigo END IF;
E JEMPLO DE U SO DE LA S ENTENCIA IF
E STRUCTURA DE C ONTROL CASE
Sintaxis:
CASE variable WHEN valor 1 THEN Cdigo
WHEN valor 2 THEN Cdigo
WHEN valor 3 THEN Cdigo ELSE -- Cdigo
END CASE;
La estructura de control CASE tambin puede usarse en una sentencia SELECT o asignar su resultado a una variable (Variable:= case.)
E JEMPLO DE U SO DE LA S ENTENCIA CASE
E STRUCTURA DE C ONTROL GOTO
La sentencia GOTO permite desviar el flujo de ejecucin a la etiqueta indicada Las etiquetas en el cdigo se sealan con los smbolos << y >> Sintxis:
GOTO etiqueta
E JEMPLO DE U SO DE LA S ENTENCIA GOTO
C ONSIDERACIONES EN EL USO DE LA S ENTENCIA GOTO
No es muy recomendable el uso de esta sentencia, ya que el abuso en su uso hace mas difcil el seguimiento del cdigo para su depuracin (rompe lo sealado para un lenguaje estructurado) Existen restricciones en su uso para algunos casos particulares, como por ejemplo, junto a la sentencia IF
E JEMPLO DE R ESTRICCIONES PARA EL USO S ENTENCIA GOTO
S ENTENCIAS
PARA
C ICLOS
PL/SQL ofrece tres formas para realizar ciclos:
LOOP: Repite los ciclos infinitamente hasta que encuentra una la instruccin EXIT
WHILE: Repite los ciclos mientras la condicin que lo acompaa sea verdadera
FOR: Repite los ciclos tantas veces como lo sealen sus variables de inicio y termino
S ENTENCIA LOOP
Sintaxis 1:
LOOP -- Cdigo If <condicin> then EXIT; End if; END LOOP;
Sintaxis 2:
LOOP -- Cdigo EXIT WHEN <condicin>; END LOOP;
E JEMPLO U SO S ENTENCIA LOOP
S ENTENCIA WHILE
Sintaxis:
WHILE <condicion> LOOP -- Cdigo END LOOP;
El ciclo se repite mientras <condicin> sea verdadera
E JEMPLO U SO S ENTENCIA WHILE
S ENTENCIA FOR
Sintaxis:
FOR contador IN [REVERSE] inicio..final LOOP -- Cdigo END LOOP;
Con la opcin REVERSE el ciclo se ejecuta en forma inversa
E JEMPLO U SO S ENTENCIA FOR
Se debe notar que la variable que utiliza la sentencia FOR, excepcionalmente no es necesario declararla en la seccin declarativa. Esta variable asume el tipo de datos utilizado por el ciclo
E JEMPLO U SO S ENTENCIA FOR
La variable j asume la estructura fila de la tabla persona (recordar el concepto de %rowtype)
E JERCICIOS
1.
Crear un bloque annimo que imprima en pantalla los nmeros pares existentes entre 1 y 100
2.
Crear un bloque annimo que imprima en pantalla los nmeros de los das del mes de agosto del ao 2015 que sean da sbado. (Utilizando
el formato day obtiene el nombre del da con la funcin to_char)
3.
Crear un bloque annimo que imprima en pantalla el factorial de un nmero ingresado como variable (El factorial de un nmero es n!:= 1 * 2 * 3 * .. * n)
AYDANOS
M EJORAR
[Link]@[Link] cmartinezc@[Link]
FIN
Csar Martnez C. Profesor Instructor de Base de Datos Sede Puente Alto DUOC