Sei sulla pagina 1di 19

Estructuras de Control

Objetivos
Identificar el uso y tipos de estructuras de
control.
Construir una declaracin IF.
Usar declaraciones CASE, y expresiones CASE.
Construir e identificar declaraciones LOOP.
Sentencia IF
Sintaxis:
IF condition THEN
statements;
[ELSIF condition THEN
statements;]
[ELSE
statements;]
END IF;
Ejemplo:
DECLARE
v_myage number:=31;
BEGIN
IF v_myage < 15 THEN
DBMS_OUTPUT.PUT_LINE (Soy un nio);
END IF;
END;
Ejemplo:
DECLARE
v_myage number:=31;
BEGIN
IF v_myage < 11 THEN
DBMS_OUTPUT.PUT_LINE (Soy un nio);
ELSE
DBMS_OUTPUT.PUT_LINE (No soy un nio);
END IF;
END;
Ejemplo:
DECLARE
v_myage number:=5;
BEGIN
IF v_myage < 2 THEN
DBMS_OUTPUT.PUT_LINE (Soy un bebe);
ELSIF v_myage < 10 THEN
DBMS_OUTPUT.PUT_LINE (Soy un nio);
ELSIF v_myage < 18 THEN
DBMS_OUTPUT.PUT_LINE (Soy un adolescente);
ELSE
DBMS_OUTPUT.PUT_LINE (Soy un adulto);
END IF;
END;
Expresiones CASE
Sintaxis:
CASE selector
WHEN expresinon1 THEN result1
[WHEN expresion2 THEN result2]

WHEN expresionn THEN resultn
[ELSE resultn+1]
END ;
Ejemplo
DECLARE
v_nota char(1);
v_resultado varchar2(20);
BEGIN
v_resultado := CASE v_nota
WHEN A THEN Excelent
WHEN B THEN Very Good
WHEN C THEN Good
ELSE Bad
END;
END;
Ejemplo
DECLARE
v_nota char(1);
v_resultado varchar2(20);
BEGIN
v_resultado := CASE
WHEN v_nota = A THEN Excelent
WHEN v_nota in (B,C) THEN Good
ELSE Bad
END;
END;
Ejemplo
DECLARE
v_deptid NUMBER;
v_deptname varchar2(20);
v_emps NUMBER;
v_mngid NUMBER := 108;
BEGIN
CASE v_mngid
WHEN 108 THEN
SELECT department_id, department_name
INTO v_deptid, v_deptname FROM departments
WHERE manager_id = 108;
SELECT count(*) INTO v_emps FROM employees
WHERE department _id = v_deptid;
WHEN 200 THEN

END CASE;
END;
Sentencias LOOP
Loops repite sentencias( o secuencias de
sentencias) mltiples veces.
Hay 3 tipos de Loop:
Loop bsico.
FOR loop.
WHILE loop.
Basic Loops
Sintaxis
LOOP
statement1;

EXIT [ WHEN condition1];
END LOOP;
Ejemplo: Basic Loop
DECLARE
v_countryid NUMBER := 1;
v_locid NUMBER;
v_contador NUMBER(2) := 1;
v_newcity varchar2(50) := Lima;
BEGIN
SELECT MAX(location_id) INTO v_loc_id FROM locations
WHERE country_id = v_countryid;
LOOP
INSERT INTO locations (location_id, city, country_id)
VALUES((v_locid + v_counter), v_new_city, v_country_id);
v_counter := v_counter +1;
EXIT WHEN v_counter > 3;
END LOOP;
END;
WHILE Loops
Sintaxis
WHILE condition LOOP
statement1;
statement2;
END LOOP;
Ejemplo: WHILE Loop
DECLARE
v_countryid NUMBER := 1;
v_locid NUMBER;
v_contador NUMBER(2) := 1;
v_newcity varchar2(50) := Lima;
BEGIN
SELECT MAX(location_id) INTO v_loc_id FROM locations
WHERE country_id = v_countryid;
WHILE v_counter <= 3
INSERT INTO locations (location_id, city, country_id)
VALUES((v_locid + v_counter), v_new_city, v_country_id);
v_counter := v_counter +1;
END LOOP;
END;
FOR Loops
Sintaxis
FOR counter IN [Reverse]
lower_bound .. upper_bound LOOP
statement1;
statement2;

END LOOP;
Ejemplo: FOR Loops
DECLARE
v_countryid NUMBER := 1;
v_locid NUMBER;
v_newcity varchar2(50) := Lima;
BEGIN
SELECT MAX(location_id) INTO v_loc_id FROM locations
WHERE country_id = v_countryid;
FOR i IN 1..3 LOOP
INSERT INTO locations (location_id, city, country_id)
VALUES((v_locid + 1), v_new_city, v_country_id);
END LOOP;
END;
Problemas
Un negocio almacena los datos de sus productos en una tabla denominada
"productos". Dicha tabla contiene el cdigo de producto, el precio, el stock
mnimo que se necesita (cantidad mnima requerida antes de comprar
ms) y el stock actual (cantidad disponible en depsito). Si el stock actual
es cero, es urgente reponer tal producto; menor al stock mnimo
requerido, es necesario reponer tal producto; si el stock actual es igual o
supera el stock minimo, est en estado normal

codigo precio stockminimo stockactual


100 10 100 200
102 15 200 500
130 8 100 0
240 23 100 20
356 12 100 250
360 7 100 100
Problemas
Una empresa almacena los datos de sus empleados en
una tabla denominada "empleados".

idEmpleado Nombre Sueldo


1 Acosta Ana 550
2 Bustos Bernardo 850
3 Noriega Hector 900
4 Crdenas Cecia 490
5 Ciudad Bryan 820
6 Trujillo Henry 470

Potrebbero piacerti anche