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

100 COOL MAINFRAME TIPS
100 COOL MAINFRAME TIPS100 COOL MAINFRAME TIPS
100 COOL MAINFRAME TIPSNirmal Pati
 
ORACLE PL SQL FOR BEGINNERS
ORACLE PL SQL FOR BEGINNERSORACLE PL SQL FOR BEGINNERS
ORACLE PL SQL FOR BEGINNERSmohdoracle
 
Laboratorio de Microcomputadoras - Práctica 06
 Laboratorio de Microcomputadoras - Práctica 06 Laboratorio de Microcomputadoras - Práctica 06
Laboratorio de Microcomputadoras - Práctica 06Cristian Ortiz Gómez
 
Arreglos Unidimensionales - Java - NetBeans
Arreglos Unidimensionales - Java - NetBeansArreglos Unidimensionales - Java - NetBeans
Arreglos Unidimensionales - Java - NetBeansDaniel Gómez
 
Jcl tutor
Jcl tutorJcl tutor
Jcl tutorshivas
 
MANUAL DE PRACTICAS DE WINDOWS SERVER 2008(Alberto Hdz)
MANUAL DE PRACTICAS DE WINDOWS SERVER 2008(Alberto Hdz) MANUAL DE PRACTICAS DE WINDOWS SERVER 2008(Alberto Hdz)
MANUAL DE PRACTICAS DE WINDOWS SERVER 2008(Alberto Hdz) Alberto Hdz
 
Lenguaje estructurado de consultas sql
Lenguaje estructurado de consultas sqlLenguaje estructurado de consultas sql
Lenguaje estructurado de consultas sqlCristian Garzon
 
Ejercicios karel
Ejercicios karelEjercicios karel
Ejercicios karelroyyyer500
 
PostgreSQL - Lección 6 - Subconsultas
PostgreSQL - Lección 6 - SubconsultasPostgreSQL - Lección 6 - Subconsultas
PostgreSQL - Lección 6 - SubconsultasNicola Strappazzon C.
 
Tipos de JOIN en SQL.pptx
Tipos de JOIN en SQL.pptxTipos de JOIN en SQL.pptx
Tipos de JOIN en SQL.pptxMiguelLlerena5
 
Base De Datos Renta Car
Base De Datos Renta CarBase De Datos Renta Car
Base De Datos Renta Carxgvxavi
 

La actualidad más candente (20)

Consultas en sql básico
Consultas en sql básicoConsultas en sql básico
Consultas en sql básico
 
100 COOL MAINFRAME TIPS
100 COOL MAINFRAME TIPS100 COOL MAINFRAME TIPS
100 COOL MAINFRAME TIPS
 
ORACLE PL SQL FOR BEGINNERS
ORACLE PL SQL FOR BEGINNERSORACLE PL SQL FOR BEGINNERS
ORACLE PL SQL FOR BEGINNERS
 
Tema5 sql - ddl
Tema5   sql - ddlTema5   sql - ddl
Tema5 sql - ddl
 
Laboratorio de Microcomputadoras - Práctica 06
 Laboratorio de Microcomputadoras - Práctica 06 Laboratorio de Microcomputadoras - Práctica 06
Laboratorio de Microcomputadoras - Práctica 06
 
Arreglos Unidimensionales - Java - NetBeans
Arreglos Unidimensionales - Java - NetBeansArreglos Unidimensionales - Java - NetBeans
Arreglos Unidimensionales - Java - NetBeans
 
Manualsqlserverparte
ManualsqlserverparteManualsqlserverparte
Manualsqlserverparte
 
Comandos ddl
Comandos ddlComandos ddl
Comandos ddl
 
Arreglos
ArreglosArreglos
Arreglos
 
SKILLWISE-DB2 DBA
SKILLWISE-DB2 DBASKILLWISE-DB2 DBA
SKILLWISE-DB2 DBA
 
Jcl tutor
Jcl tutorJcl tutor
Jcl tutor
 
MANUAL DE PRACTICAS DE WINDOWS SERVER 2008(Alberto Hdz)
MANUAL DE PRACTICAS DE WINDOWS SERVER 2008(Alberto Hdz) MANUAL DE PRACTICAS DE WINDOWS SERVER 2008(Alberto Hdz)
MANUAL DE PRACTICAS DE WINDOWS SERVER 2008(Alberto Hdz)
 
Ejercicios sql
Ejercicios sqlEjercicios sql
Ejercicios sql
 
Lenguaje estructurado de consultas sql
Lenguaje estructurado de consultas sqlLenguaje estructurado de consultas sql
Lenguaje estructurado de consultas sql
 
Plsql
PlsqlPlsql
Plsql
 
Consultas MySQL
Consultas  MySQLConsultas  MySQL
Consultas MySQL
 
Ejercicios karel
Ejercicios karelEjercicios karel
Ejercicios karel
 
PostgreSQL - Lección 6 - Subconsultas
PostgreSQL - Lección 6 - SubconsultasPostgreSQL - Lección 6 - Subconsultas
PostgreSQL - Lección 6 - Subconsultas
 
Tipos de JOIN en SQL.pptx
Tipos de JOIN en SQL.pptxTipos de JOIN en SQL.pptx
Tipos de JOIN en SQL.pptx
 
Base De Datos Renta Car
Base De Datos Renta CarBase De Datos Renta Car
Base De Datos Renta Car
 

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

la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfFrancisco158360
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxAna Fernandez
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñotapirjackluis
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 

Último (20)

la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdfCurso = Metodos Tecnicas y Modelos de Enseñanza.pdf
Curso = Metodos Tecnicas y Modelos de Enseñanza.pdf
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
RETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docxRETO MES DE ABRIL .............................docx
RETO MES DE ABRIL .............................docx
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niñoproyecto de mayo inicial 5 añitos aprender es bueno para tu niño
proyecto de mayo inicial 5 añitos aprender es bueno para tu niño
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 

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; /