SlideShare una empresa de Scribd logo
1 de 7
/*
Sesión06 – Estructuras de control
Estudiante: José Luis Toro Alcarraz
Curso: Base de Datos Avanzado II
Correo:i201010865@cibertec.edu.pe
*/
Objetivos de la sesión.



Usar adecuadamente las estructuras de control IF.
Usar adecuadamente las estructuras de control LOOP.

1) Control de Flujo en bloques PL/SQL (Estructuras de control)
2) Uso de CASE
3) Sentencias LOOP
4) Sentencia GOTO
1) Control de Flujo en bloques PL/SQL (Estructuras de control)
En PL/SQL solo disponemos de la estructura condicional IF. Su sintaxis se muestra a continuación:
IF (expresion) THEN
-- Instrucciones
ELSIF (expresion) THEN
-- Instrucciones
ELSE
-- Instrucciones
END IF;
a) Sentencia IF – THEN – ELSE




Es similar a la estructura de la sentencia IF de otros lenguajes.
Permite a PL/SQL realizar acciones en forma selectiva, dependiendo de las condiciones
que se cumplen.
Las cláusulas ELSIF y ELSE son opcionales, y puede haber tantas cláusulas ELSIF como
se desee.

Ejemplo:
DECLARE
v_comision number(4,2):=10;
BEGIN
IF v_comision IS NULL THEN
dbms_output.put_line('La comisión es nula');
ELSIF v_comision > 0 THEN
dbms_output.put_line('Comisión es mayor a cero');
ELSIF v_comision < 0 THEN
dbms_output.put_line('Comisión es negativa');
ELSE
dbms_output.put_line('Comisión es cero.');
END IF;
END;
/
Recomendaciones:




Cualquier comparación simple que contenga un valor nulo retorna NULL como resultado.
Una comparación IS NULL retorna como resultado TRUE o FALSE.
La negación de un valor nulo retorna NULL como resultado, puesto que los valores nulos
son indeterminados.

Ejemplo2:
DECLARE
V_NUMERO1 NUMBER(4,2):=5;
V_NUMERO2 NUMBER(4,2);
BEGIN
IF V_NUMERO1<> V_NUMERO2 THEN
dbms_output.put_line('SON DIFERENTES');
ELSE
dbms_output.put_line('SON IGUALES');
END IF;
END;
/
Nota: Un aspecto a tener en cuenta es que la instrucción condicional anidada es ELSIF y no
"ELSE IF".
2) Uso de CASE
La instrucción CASE permite realizar una ejecución condicional, al igual que la instrucción IF, sin
embargo la instrucción CASE se adapta especialmente bien a las condiciones que implican
numerosas opciones diferentes. Además el uso del CASE puede mejorar el rendimiento durante la
ejecución.
Ejemplo1:
DECLARE
v_comision number(4,2);
BEGIN
CASE
WHEN v_comision IS NULL THEN
dbms_output.put_line('La comisión es nula');
WHEN v_comision > 0 THEN
dbms_output.put_line('Comisión es mayor a cero');
WHEN v_comision < 0 THEN
dbms_output.put_line('Comisión es negativa');
ELSE
dbms_output.put_line('Comisión es cero.');
END CASE;
END;
/
Ejemplo2:
DECLARE
v_comision number(4,2);
BEGIN
CASE v_comision
WHEN NULL THEN
dbms_output.put_line('La comisión es nula');
WHEN 10 THEN
dbms_output.put_line('Comisión es diez');
WHEN 20 THEN
dbms_output.put_line('Comisión es veinte');
ELSE
dbms_output.put_line('Comisión no es ni 10 ni 20.');
END CASE;
END;
/
3) Sentencias LOOP
En PL/SQL tenemos a nuestra disposición los siguientes iteradores o bucles:
a) LOOP
b) WHILE
c) FOR
a) Bucle LOOP.
El bucle LOOP, se repite tantas veces como sea necesario hasta que se fuerza su salida con la
instrucción EXIT. Su sintaxis es la siguiente.
LOOP
-- Instrucciones
IF (expresion) THEN
-- Instrucciones
EXIT;
END IF;
END LOOP;
Ejemplo:
-- Mostrar el valor de un contador en cada ciclo
DECLARE
v_cont_n
NUMBER:=0;
BEGIN
Dbms_output.put_line('Inicio del Loop : ' || TO_CHAR(sysdate,'HH24:MI:SS'));
LOOP
Dbms_output.put_line('El contador es : ' || v_cont_n);
v_cont_n := v_cont_n + 1;
EXIT WHEN v_cont_n = 20;
END LOOP;
Dbms_output.put_line('Fin del Loop : ' || TO_CHAR(sysdate,'HH24:MI:SS'));
END;
/
b) Bucle WHILE.
El bucle WHILE, se repite mientras que se cumpla la expresión su sintaxis es la siguiente.

WHILE (expresion) LOOP
-- Instrucciones
END LOOP;
Ejemplo:
-- Mostrar los números del 1 al 20 si son pares o impares
DECLARE
v_cont_n
NUMBER:=1;
BEGIN
WHILE v_cont_n <= 20 LOOP
IF MOD(v_cont_n,2) = 0 THEN
Dbms_output.put_line(v_cont_n || ' es par.');
ELSE
Dbms_output.put_line(v_cont_n || ' es impar.');
END IF;
v_cont_n := v_cont_n + 1;
END LOOP;
END;
/
c) Bucle FOR.
El bucle FOR, se repite tanta veces como le indiquemos en los identificadores inicio y final.
En el caso de especificar REVERSE el bucle se recorre en sentido inverso.
FOR contador IN [REVERSE] inicio..final LOOP
-- Instrucciones
END LOOP;
Ejemplo:
-- Mostrar los números múltiplos de 3 y/o 5 entre el 1 y el 100 usando FOR
BEGIN
FOR i IN 1..100 LOOP
IF MOD(i,3) = 0 AND MOD(i,5) = 0 THEN
Dbms_output.put_line(i || ' es múltiplo de 3 y de 5.');
ELSIF MOD(I,3) = 0 THEN
Dbms_output.put_line(i || ' es múltiplo de 3.');
ELSIF MOD(I,5) = 0 THEN
Dbms_output.put_line(i || ' es múltiplo de 5.');
ELSE
Dbms_output.put_line(i || ' no es múltiplo ni de 3 ni de 5.');
END IF;
END LOOP;
END;
/
4) Sentencia GOTO.
PL/SQL dispone de la sentencia GOTO. La sentencia GOTO desvía el flujo de ejecución a una
determinada etiqueta. En PL/SQL las etiquetas se indican del siguiente modo: << etiqueta >>
Ejemplo1:
DECLARE
FLAG NUMBER;
BEGIN
FLAG :=1 ;
IF (FLAG = 1) THEN
GOTO PASO2;
END IF;
<<PASO1>>
DBMS_OUTPUT.PUT_LINE('EJECUCION DE PASO 1');
<<PASO2>>
DBMS_OUTPUT.PUT_LINE('EJECUCION DE PASO 2');
END;
/
Ejemplo2:
-- Encontramos el primer múltiplo de 13 mayor que 50
DECLARE
v_num NUMBER(3);
BEGIN
FOR v_cont IN 50..100 LOOP
if MOD(v_cont,13) =0 then
v_num := v_cont;
dbms_output.new_line;
GOTO bloque1;
End If;
END LOOP;
<<BLOQUE1>>
dbms_output.put_line(' Primer múltiplo de 13 : ' || v_num);
END;
/
Algunos problemas:
Problema1: programa actualiza la comisión de un empleado. El programa debe recibir el código
del empleado, a ese empleado le deben asignar como comisión el 5% de toda las ventas que ha
realizado.
SQL>
DECLARE
V_EMPNO EMP.EMPNO%TYPE:=7900;
V_TOTAL NUMBER(10,2);
BEGIN
SELECT SUM(TOTAL) INTO V_TOTAL
FROM ORD
WHERE EMPNO=V_EMPNO;
UPDATE EMP
SET COMM = V_TOTAL*0.05
WHERE EMPNO=V_EMPNO;
END;
/
Problema2: Modifica el problema anterior sabiendo que si el total de ventas es menor a 3000 no
asigno comisión, sin son entre 3000 y 5000 comisionas el 3%, si vendes más de 5000 es el 5%.
SQL>
DECLARE
V_EMPNO EMP.EMPNO%TYPE:=7900;
V_TOTAL NUMBER(10,2);
V_PORCENTAJE NUMBER(4,2);
BEGIN
SELECT SUM(TOTAL) INTO V_TOTAL
FROM ORD
WHERE EMPNO=V_EMPNO;
IF V_TOTAL < 3000 THEN
V_PORCENTAJE:=0;
ELSIF V_TOTAL >= 3000 AND V_TOTAL <= 5000 THEN
V_PORCENTAJE:=0.03;
ELSE
V_PORCENTAJE:=0.05;
END IF;
UPDATE EMP
SET COMM = V_TOTAL*V_PORCENTAJE
WHERE EMPNO=V_EMPNO;
END;
/
Problema3: Imprimir el calendarios del mes de marzo del 2012.
SQL>
DECLARE
V_FECHA DATE:=TRUNC(SYSDATE,'MM');
BEGIN
WHILE V_FECHA <= LAST_DAY(SYSDATE) LOOP
DBMS_OUTPUT.PUT_LINE(TO_CHAR(V_FECHA,'DAY DD MONTH YYYY'));
V_FECHA:=V_FECHA + 1;
END LOOP;
END;
/
Problema4: Programa que reciba una cadena y que imprima la cadena invertía.
SQL>
DECLARE
V_CADENA VARCHAR2(50):='CIBERTEC';
V_REVERSA VARCHAR2(50);
V_POSICION NUMBER(2);
BEGIN
V_POSICION:=LENGTH(V_CADENA);
WHILE V_POSICION >=1 LOOP
V_REVERSA:=V_REVERSA || SUBSTR(V_CADENA,V_POSICION,1);
V_POSICION := V_POSICION - 1;
END LOOP;
DBMS_OUTPUT.PUT_LINE(V_REVERSA);
END;
/

Más contenido relacionado

La actualidad más candente

Procesamiento por lotes y nuevas tendencias en bd
Procesamiento por lotes y nuevas tendencias en bdProcesamiento por lotes y nuevas tendencias en bd
Procesamiento por lotes y nuevas tendencias en bdJohnny Garcia
 
Algoritmos de planificación de procesos en sistemas operativos
Algoritmos de planificación de procesos en sistemas operativosAlgoritmos de planificación de procesos en sistemas operativos
Algoritmos de planificación de procesos en sistemas operativosFernando Morales
 
Librerias en Lenguaje C
Librerias en Lenguaje C Librerias en Lenguaje C
Librerias en Lenguaje C Nicole Cedeño
 
Base de datos propiedades acid
Base de datos propiedades acidBase de datos propiedades acid
Base de datos propiedades acidJefer Lee Parra
 
Estructuras (CAPAS) de un sistema operativo
Estructuras (CAPAS) de un sistema operativoEstructuras (CAPAS) de un sistema operativo
Estructuras (CAPAS) de un sistema operativoMarvin Romero
 
Modelos de estados
Modelos de estadosModelos de estados
Modelos de estadosFaubricio
 
CONCEPTOS Y FUNDAMENTOS DE LÓGICA DIFUSA
CONCEPTOS Y FUNDAMENTOS    DE LÓGICA DIFUSACONCEPTOS Y FUNDAMENTOS    DE LÓGICA DIFUSA
CONCEPTOS Y FUNDAMENTOS DE LÓGICA DIFUSAESCOM
 
Trabajo 2 transacciones en base de datos
Trabajo 2   transacciones en base de datosTrabajo 2   transacciones en base de datos
Trabajo 2 transacciones en base de datosJose O- Vera
 
Algoritmo divide y vencerás
Algoritmo divide y vencerásAlgoritmo divide y vencerás
Algoritmo divide y vencerásloco8888
 
Mecanismos de exclusion mutua y algoritmos
Mecanismos de exclusion mutua y algoritmosMecanismos de exclusion mutua y algoritmos
Mecanismos de exclusion mutua y algoritmosAbimael hernandez
 
La evolución histórica de los sistemas operativos
La evolución histórica de los sistemas operativosLa evolución histórica de los sistemas operativos
La evolución histórica de los sistemas operativosegonrea
 

La actualidad más candente (20)

Lectores y escritores
Lectores y escritoresLectores y escritores
Lectores y escritores
 
Recursividad
RecursividadRecursividad
Recursividad
 
Procesamiento por lotes y nuevas tendencias en bd
Procesamiento por lotes y nuevas tendencias en bdProcesamiento por lotes y nuevas tendencias en bd
Procesamiento por lotes y nuevas tendencias en bd
 
Algoritmos de planificación de procesos en sistemas operativos
Algoritmos de planificación de procesos en sistemas operativosAlgoritmos de planificación de procesos en sistemas operativos
Algoritmos de planificación de procesos en sistemas operativos
 
Librerias en Lenguaje C
Librerias en Lenguaje C Librerias en Lenguaje C
Librerias en Lenguaje C
 
Base de datos propiedades acid
Base de datos propiedades acidBase de datos propiedades acid
Base de datos propiedades acid
 
ENRUTAMIENTO (REDES)
ENRUTAMIENTO (REDES)ENRUTAMIENTO (REDES)
ENRUTAMIENTO (REDES)
 
Estructuras (CAPAS) de un sistema operativo
Estructuras (CAPAS) de un sistema operativoEstructuras (CAPAS) de un sistema operativo
Estructuras (CAPAS) de un sistema operativo
 
Mapa mental de hilos
Mapa mental de hilosMapa mental de hilos
Mapa mental de hilos
 
Modelos de estados
Modelos de estadosModelos de estados
Modelos de estados
 
CONCEPTOS Y FUNDAMENTOS DE LÓGICA DIFUSA
CONCEPTOS Y FUNDAMENTOS    DE LÓGICA DIFUSACONCEPTOS Y FUNDAMENTOS    DE LÓGICA DIFUSA
CONCEPTOS Y FUNDAMENTOS DE LÓGICA DIFUSA
 
Trabajo 2 transacciones en base de datos
Trabajo 2   transacciones en base de datosTrabajo 2   transacciones en base de datos
Trabajo 2 transacciones en base de datos
 
Pruebas de autocorrelacion yule
Pruebas de autocorrelacion yulePruebas de autocorrelacion yule
Pruebas de autocorrelacion yule
 
Características Generales de EIGRP
Características Generales de EIGRPCaracterísticas Generales de EIGRP
Características Generales de EIGRP
 
Unidad1 Lenguajes y automatas
Unidad1 Lenguajes y automatasUnidad1 Lenguajes y automatas
Unidad1 Lenguajes y automatas
 
Algoritmo divide y vencerás
Algoritmo divide y vencerásAlgoritmo divide y vencerás
Algoritmo divide y vencerás
 
Mecanismos de exclusion mutua y algoritmos
Mecanismos de exclusion mutua y algoritmosMecanismos de exclusion mutua y algoritmos
Mecanismos de exclusion mutua y algoritmos
 
La evolución histórica de los sistemas operativos
La evolución histórica de los sistemas operativosLa evolución histórica de los sistemas operativos
La evolución histórica de los sistemas operativos
 
Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.
 
Analizador Léxico en C++
Analizador Léxico en C++Analizador Léxico en C++
Analizador Léxico en C++
 

Destacado

Sesion06b - Introducción al PL-SQL (Oracle)
Sesion06b - Introducción al PL-SQL (Oracle)Sesion06b - Introducción al PL-SQL (Oracle)
Sesion06b - Introducción al PL-SQL (Oracle)José Toro
 
Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)José Toro
 
Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)José Toro
 
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)José Toro
 
Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)José Toro
 
Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)José Toro
 
Sesión01 - Gestión de instancia (Oracle)
Sesión01 - Gestión de instancia (Oracle)Sesión01 - Gestión de instancia (Oracle)
Sesión01 - Gestión de instancia (Oracle)José Toro
 
Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)José Toro
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)José Toro
 
Sesion09 - Manejo de Excepciones (Oracle)
Sesion09 - Manejo de Excepciones (Oracle)Sesion09 - Manejo de Excepciones (Oracle)
Sesion09 - Manejo de Excepciones (Oracle)José Toro
 
Sesión14 – Archivos redologs (Oracle)
Sesión14 – Archivos redologs (Oracle)Sesión14 – Archivos redologs (Oracle)
Sesión14 – Archivos redologs (Oracle)José Toro
 
Sesión13 - Archivos de Control (Oracle)
Sesión13 - Archivos de Control (Oracle)Sesión13 - Archivos de Control (Oracle)
Sesión13 - Archivos de Control (Oracle)José Toro
 
Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)José Toro
 
Unidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlUnidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlTitiushko Jazz
 
Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)José Toro
 
CapÍtulo 23 (Seguridad de base de datos)
CapÍtulo 23 (Seguridad de base de datos)CapÍtulo 23 (Seguridad de base de datos)
CapÍtulo 23 (Seguridad de base de datos)Liz Ocampo
 
Semana 1 t sistema de base de datos
Semana 1 t sistema de base de datosSemana 1 t sistema de base de datos
Semana 1 t sistema de base de datoserickrwk
 

Destacado (20)

Sesion06b - Introducción al PL-SQL (Oracle)
Sesion06b - Introducción al PL-SQL (Oracle)Sesion06b - Introducción al PL-SQL (Oracle)
Sesion06b - Introducción al PL-SQL (Oracle)
 
Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)Sesion06a - Manipulacion de datos (Oracle)
Sesion06a - Manipulacion de datos (Oracle)
 
Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)
 
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)Sesion06c - Sentencias SQL en PL-SQL (Oracle)
Sesion06c - Sentencias SQL en PL-SQL (Oracle)
 
Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)
 
Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)Sesion08 - Cursores (Oracle)
Sesion08 - Cursores (Oracle)
 
Sesión01 - Gestión de instancia (Oracle)
Sesión01 - Gestión de instancia (Oracle)Sesión01 - Gestión de instancia (Oracle)
Sesión01 - Gestión de instancia (Oracle)
 
Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)Sesión03 - Creación de objetos (Oracle)
Sesión03 - Creación de objetos (Oracle)
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)
 
Sesion09 - Manejo de Excepciones (Oracle)
Sesion09 - Manejo de Excepciones (Oracle)Sesion09 - Manejo de Excepciones (Oracle)
Sesion09 - Manejo de Excepciones (Oracle)
 
Sesión14 – Archivos redologs (Oracle)
Sesión14 – Archivos redologs (Oracle)Sesión14 – Archivos redologs (Oracle)
Sesión14 – Archivos redologs (Oracle)
 
Sesión13 - Archivos de Control (Oracle)
Sesión13 - Archivos de Control (Oracle)Sesión13 - Archivos de Control (Oracle)
Sesión13 - Archivos de Control (Oracle)
 
Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)Sesion10 - Funciones y procedimientos (Oracle)
Sesion10 - Funciones y procedimientos (Oracle)
 
Unidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sqlUnidad vi esp parte 2 procesimientos en plsql y transact sql
Unidad vi esp parte 2 procesimientos en plsql y transact sql
 
Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)Sesión12 - Trigger (Oracle)
Sesión12 - Trigger (Oracle)
 
CapÍtulo 23 (Seguridad de base de datos)
CapÍtulo 23 (Seguridad de base de datos)CapÍtulo 23 (Seguridad de base de datos)
CapÍtulo 23 (Seguridad de base de datos)
 
Semana 1 t sistema de base de datos
Semana 1 t sistema de base de datosSemana 1 t sistema de base de datos
Semana 1 t sistema de base de datos
 
Tema 02 - Filtros - 2012 01
Tema 02 - Filtros - 2012 01Tema 02 - Filtros - 2012 01
Tema 02 - Filtros - 2012 01
 
Tema 03 filtros 2011 02
Tema 03   filtros 2011 02Tema 03   filtros 2011 02
Tema 03 filtros 2011 02
 
Tema 05 tablas dinamicas 2011 02
Tema 05   tablas dinamicas 2011 02Tema 05   tablas dinamicas 2011 02
Tema 05 tablas dinamicas 2011 02
 

Similar a Sesion07- Estructuras de control (Oracle)

Estructuras de control - PL / SQL
Estructuras de control - PL / SQLEstructuras de control - PL / SQL
Estructuras de control - PL / SQLBernaMartinez
 
Forms 10g procedimientos y cursores
Forms 10g procedimientos y cursoresForms 10g procedimientos y cursores
Forms 10g procedimientos y cursoresEdwin Romero
 
Estructuras de control C++
Estructuras de control C++Estructuras de control C++
Estructuras de control C++LOANNELMARIN
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Javaquesada_diego
 
estructura de programación
estructura de programación estructura de programación
estructura de programación Julio Santos
 
Oracle pl sql
Oracle pl sqlOracle pl sql
Oracle pl sqlclaudia_m
 
Programacion Avanzada JavaScript
Programacion Avanzada JavaScriptProgramacion Avanzada JavaScript
Programacion Avanzada JavaScripttovi27
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sqlSuarezJhon
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sqlDeisyVilchez
 
Php04 estructuras control
Php04 estructuras controlPhp04 estructuras control
Php04 estructuras controlJulio Pari
 
PL SQL Diplomado Oracle
PL SQL Diplomado OraclePL SQL Diplomado Oracle
PL SQL Diplomado OracleUzziel Chaidez
 
13 Guía_Fundamentos de Base de Datos.docx
13 Guía_Fundamentos de Base de Datos.docx13 Guía_Fundamentos de Base de Datos.docx
13 Guía_Fundamentos de Base de Datos.docxLeydyVeronicaDelgado
 
13 Guía_Fundamentos de Base de Datos (1).docx
13 Guía_Fundamentos de Base de Datos (1).docx13 Guía_Fundamentos de Base de Datos (1).docx
13 Guía_Fundamentos de Base de Datos (1).docxLeydyVeronicaDelgado
 
Lenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de ControlLenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de ControlKarina Arguedas Ruelas
 
DAW-Estructuras de control
DAW-Estructuras de controlDAW-Estructuras de control
DAW-Estructuras de controlvay82
 

Similar a Sesion07- Estructuras de control (Oracle) (20)

Estructuras de control - PL / SQL
Estructuras de control - PL / SQLEstructuras de control - PL / SQL
Estructuras de control - PL / SQL
 
Forms 10g procedimientos y cursores
Forms 10g procedimientos y cursoresForms 10g procedimientos y cursores
Forms 10g procedimientos y cursores
 
Lumisaca hector bdii_t7
Lumisaca hector bdii_t7Lumisaca hector bdii_t7
Lumisaca hector bdii_t7
 
Estructuras de control C++
Estructuras de control C++Estructuras de control C++
Estructuras de control C++
 
Estructuras de control en Java
Estructuras de control en JavaEstructuras de control en Java
Estructuras de control en Java
 
estructura de programación
estructura de programación estructura de programación
estructura de programación
 
Pl
PlPl
Pl
 
Oracle pl sql
Oracle pl sqlOracle pl sql
Oracle pl sql
 
Programacion Avanzada JavaScript
Programacion Avanzada JavaScriptProgramacion Avanzada JavaScript
Programacion Avanzada JavaScript
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Transac sq ll
Transac sq llTransac sq ll
Transac sq ll
 
Lenguaje transact sql
Lenguaje transact sqlLenguaje transact sql
Lenguaje transact sql
 
Php04 estructuras control
Php04 estructuras controlPhp04 estructuras control
Php04 estructuras control
 
Control
ControlControl
Control
 
PL SQL Diplomado Oracle
PL SQL Diplomado OraclePL SQL Diplomado Oracle
PL SQL Diplomado Oracle
 
Teoria
TeoriaTeoria
Teoria
 
13 Guía_Fundamentos de Base de Datos.docx
13 Guía_Fundamentos de Base de Datos.docx13 Guía_Fundamentos de Base de Datos.docx
13 Guía_Fundamentos de Base de Datos.docx
 
13 Guía_Fundamentos de Base de Datos (1).docx
13 Guía_Fundamentos de Base de Datos (1).docx13 Guía_Fundamentos de Base de Datos (1).docx
13 Guía_Fundamentos de Base de Datos (1).docx
 
Lenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de ControlLenguaje Borland C - Estructuras de Control
Lenguaje Borland C - Estructuras de Control
 
DAW-Estructuras de control
DAW-Estructuras de controlDAW-Estructuras de control
DAW-Estructuras de control
 

Último

PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxiemerc2024
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICAÁngel Encinas
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOPsicoterapia Holística
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptAlberto Rubio
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfRosabel UA
 
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...JoseMartinMalpartida1
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Juan Martín Martín
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesMarisolMartinez707897
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!CatalinaAlfaroChryso
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOluismii249
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfpatriciaines1993
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptNancyMoreiraMora1
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docxEliaHernndez7
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxFernando Solis
 
Linea del tiempo - Filosofos Cristianos.docx
Linea del tiempo - Filosofos Cristianos.docxLinea del tiempo - Filosofos Cristianos.docx
Linea del tiempo - Filosofos Cristianos.docxEnriqueLineros1
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAJAVIER SOLIS NOYOLA
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Katherine Concepcion Gonzalez
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...jlorentemartos
 

Último (20)

PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICABIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
BIOMETANO SÍ, PERO NO ASÍ. LA NUEVA BURBUJA ENERGÉTICA
 
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADOTIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
TIENDAS MASS MINIMARKET ESTUDIO DE MERCADO
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
1ro Programación Anual D.P.C.C planificación anual del área para el desarroll...
 
Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024Prueba libre de Geografía para obtención título Bachillerato - 2024
Prueba libre de Geografía para obtención título Bachillerato - 2024
 
Los avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtualesLos avatares para el juego dramático en entornos virtuales
Los avatares para el juego dramático en entornos virtuales
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.pptFUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
FUERZA Y MOVIMIENTO ciencias cuarto basico.ppt
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
Concepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptxConcepto y definición de tipos de Datos Abstractos en c++.pptx
Concepto y definición de tipos de Datos Abstractos en c++.pptx
 
Linea del tiempo - Filosofos Cristianos.docx
Linea del tiempo - Filosofos Cristianos.docxLinea del tiempo - Filosofos Cristianos.docx
Linea del tiempo - Filosofos Cristianos.docx
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
Procedimientos para la planificación en los Centros Educativos tipo V ( multi...
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 

Sesion07- Estructuras de control (Oracle)

  • 1. /* Sesión06 – Estructuras de control Estudiante: José Luis Toro Alcarraz Curso: Base de Datos Avanzado II Correo:i201010865@cibertec.edu.pe */ Objetivos de la sesión.   Usar adecuadamente las estructuras de control IF. Usar adecuadamente las estructuras de control LOOP. 1) Control de Flujo en bloques PL/SQL (Estructuras de control) 2) Uso de CASE 3) Sentencias LOOP 4) Sentencia GOTO 1) Control de Flujo en bloques PL/SQL (Estructuras de control) En PL/SQL solo disponemos de la estructura condicional IF. Su sintaxis se muestra a continuación: IF (expresion) THEN -- Instrucciones ELSIF (expresion) THEN -- Instrucciones ELSE -- Instrucciones END IF; a) Sentencia IF – THEN – ELSE    Es similar a la estructura de la sentencia IF de otros lenguajes. Permite a PL/SQL realizar acciones en forma selectiva, dependiendo de las condiciones que se cumplen. Las cláusulas ELSIF y ELSE son opcionales, y puede haber tantas cláusulas ELSIF como se desee. Ejemplo: DECLARE v_comision number(4,2):=10; BEGIN IF v_comision IS NULL THEN dbms_output.put_line('La comisión es nula'); ELSIF v_comision > 0 THEN dbms_output.put_line('Comisión es mayor a cero'); ELSIF v_comision < 0 THEN dbms_output.put_line('Comisión es negativa'); ELSE dbms_output.put_line('Comisión es cero.');
  • 2. END IF; END; / Recomendaciones:    Cualquier comparación simple que contenga un valor nulo retorna NULL como resultado. Una comparación IS NULL retorna como resultado TRUE o FALSE. La negación de un valor nulo retorna NULL como resultado, puesto que los valores nulos son indeterminados. Ejemplo2: DECLARE V_NUMERO1 NUMBER(4,2):=5; V_NUMERO2 NUMBER(4,2); BEGIN IF V_NUMERO1<> V_NUMERO2 THEN dbms_output.put_line('SON DIFERENTES'); ELSE dbms_output.put_line('SON IGUALES'); END IF; END; / Nota: Un aspecto a tener en cuenta es que la instrucción condicional anidada es ELSIF y no "ELSE IF". 2) Uso de CASE La instrucción CASE permite realizar una ejecución condicional, al igual que la instrucción IF, sin embargo la instrucción CASE se adapta especialmente bien a las condiciones que implican numerosas opciones diferentes. Además el uso del CASE puede mejorar el rendimiento durante la ejecución. Ejemplo1: DECLARE v_comision number(4,2); BEGIN CASE WHEN v_comision IS NULL THEN dbms_output.put_line('La comisión es nula'); WHEN v_comision > 0 THEN dbms_output.put_line('Comisión es mayor a cero'); WHEN v_comision < 0 THEN dbms_output.put_line('Comisión es negativa'); ELSE dbms_output.put_line('Comisión es cero.');
  • 3. END CASE; END; / Ejemplo2: DECLARE v_comision number(4,2); BEGIN CASE v_comision WHEN NULL THEN dbms_output.put_line('La comisión es nula'); WHEN 10 THEN dbms_output.put_line('Comisión es diez'); WHEN 20 THEN dbms_output.put_line('Comisión es veinte'); ELSE dbms_output.put_line('Comisión no es ni 10 ni 20.'); END CASE; END; / 3) Sentencias LOOP En PL/SQL tenemos a nuestra disposición los siguientes iteradores o bucles: a) LOOP b) WHILE c) FOR a) Bucle LOOP. El bucle LOOP, se repite tantas veces como sea necesario hasta que se fuerza su salida con la instrucción EXIT. Su sintaxis es la siguiente. LOOP -- Instrucciones IF (expresion) THEN -- Instrucciones EXIT; END IF; END LOOP; Ejemplo: -- Mostrar el valor de un contador en cada ciclo DECLARE v_cont_n NUMBER:=0; BEGIN Dbms_output.put_line('Inicio del Loop : ' || TO_CHAR(sysdate,'HH24:MI:SS'));
  • 4. LOOP Dbms_output.put_line('El contador es : ' || v_cont_n); v_cont_n := v_cont_n + 1; EXIT WHEN v_cont_n = 20; END LOOP; Dbms_output.put_line('Fin del Loop : ' || TO_CHAR(sysdate,'HH24:MI:SS')); END; / b) Bucle WHILE. El bucle WHILE, se repite mientras que se cumpla la expresión su sintaxis es la siguiente. WHILE (expresion) LOOP -- Instrucciones END LOOP; Ejemplo: -- Mostrar los números del 1 al 20 si son pares o impares DECLARE v_cont_n NUMBER:=1; BEGIN WHILE v_cont_n <= 20 LOOP IF MOD(v_cont_n,2) = 0 THEN Dbms_output.put_line(v_cont_n || ' es par.'); ELSE Dbms_output.put_line(v_cont_n || ' es impar.'); END IF; v_cont_n := v_cont_n + 1; END LOOP; END; / c) Bucle FOR. El bucle FOR, se repite tanta veces como le indiquemos en los identificadores inicio y final. En el caso de especificar REVERSE el bucle se recorre en sentido inverso. FOR contador IN [REVERSE] inicio..final LOOP -- Instrucciones END LOOP; Ejemplo: -- Mostrar los números múltiplos de 3 y/o 5 entre el 1 y el 100 usando FOR BEGIN FOR i IN 1..100 LOOP IF MOD(i,3) = 0 AND MOD(i,5) = 0 THEN Dbms_output.put_line(i || ' es múltiplo de 3 y de 5.');
  • 5. ELSIF MOD(I,3) = 0 THEN Dbms_output.put_line(i || ' es múltiplo de 3.'); ELSIF MOD(I,5) = 0 THEN Dbms_output.put_line(i || ' es múltiplo de 5.'); ELSE Dbms_output.put_line(i || ' no es múltiplo ni de 3 ni de 5.'); END IF; END LOOP; END; / 4) Sentencia GOTO. PL/SQL dispone de la sentencia GOTO. La sentencia GOTO desvía el flujo de ejecución a una determinada etiqueta. En PL/SQL las etiquetas se indican del siguiente modo: << etiqueta >> Ejemplo1: DECLARE FLAG NUMBER; BEGIN FLAG :=1 ; IF (FLAG = 1) THEN GOTO PASO2; END IF; <<PASO1>> DBMS_OUTPUT.PUT_LINE('EJECUCION DE PASO 1'); <<PASO2>> DBMS_OUTPUT.PUT_LINE('EJECUCION DE PASO 2'); END; / Ejemplo2: -- Encontramos el primer múltiplo de 13 mayor que 50 DECLARE v_num NUMBER(3); BEGIN FOR v_cont IN 50..100 LOOP if MOD(v_cont,13) =0 then v_num := v_cont; dbms_output.new_line; GOTO bloque1; End If; END LOOP; <<BLOQUE1>> dbms_output.put_line(' Primer múltiplo de 13 : ' || v_num); END; /
  • 6. Algunos problemas: Problema1: programa actualiza la comisión de un empleado. El programa debe recibir el código del empleado, a ese empleado le deben asignar como comisión el 5% de toda las ventas que ha realizado. SQL> DECLARE V_EMPNO EMP.EMPNO%TYPE:=7900; V_TOTAL NUMBER(10,2); BEGIN SELECT SUM(TOTAL) INTO V_TOTAL FROM ORD WHERE EMPNO=V_EMPNO; UPDATE EMP SET COMM = V_TOTAL*0.05 WHERE EMPNO=V_EMPNO; END; / Problema2: Modifica el problema anterior sabiendo que si el total de ventas es menor a 3000 no asigno comisión, sin son entre 3000 y 5000 comisionas el 3%, si vendes más de 5000 es el 5%. SQL> DECLARE V_EMPNO EMP.EMPNO%TYPE:=7900; V_TOTAL NUMBER(10,2); V_PORCENTAJE NUMBER(4,2); BEGIN SELECT SUM(TOTAL) INTO V_TOTAL FROM ORD WHERE EMPNO=V_EMPNO; IF V_TOTAL < 3000 THEN V_PORCENTAJE:=0; ELSIF V_TOTAL >= 3000 AND V_TOTAL <= 5000 THEN V_PORCENTAJE:=0.03; ELSE V_PORCENTAJE:=0.05; END IF; UPDATE EMP SET COMM = V_TOTAL*V_PORCENTAJE WHERE EMPNO=V_EMPNO; END; /
  • 7. Problema3: Imprimir el calendarios del mes de marzo del 2012. SQL> DECLARE V_FECHA DATE:=TRUNC(SYSDATE,'MM'); BEGIN WHILE V_FECHA <= LAST_DAY(SYSDATE) LOOP DBMS_OUTPUT.PUT_LINE(TO_CHAR(V_FECHA,'DAY DD MONTH YYYY')); V_FECHA:=V_FECHA + 1; END LOOP; END; / Problema4: Programa que reciba una cadena y que imprima la cadena invertía. SQL> DECLARE V_CADENA VARCHAR2(50):='CIBERTEC'; V_REVERSA VARCHAR2(50); V_POSICION NUMBER(2); BEGIN V_POSICION:=LENGTH(V_CADENA); WHILE V_POSICION >=1 LOOP V_REVERSA:=V_REVERSA || SUBSTR(V_CADENA,V_POSICION,1); V_POSICION := V_POSICION - 1; END LOOP; DBMS_OUTPUT.PUT_LINE(V_REVERSA); END; /