100 - Control de flujo (loop) |
Una empresa almacena los datos de sus empleados en una tabla denominada "empleados".
1- Elimine la tabla y créela con la siguiente estructura:
drop table empleados; create table empleados( nombre varchar2(40), sueldo number(6,2) );
2- Ingrese algunos registros:
insert into empleados values('Acosta Ana',550); insert into empleados values('Bustos Bernardo',850); insert into empleados values('Caseros Carolina',900); insert into empleados values('Dominguez Daniel',490); insert into empleados values('Fuentes Fabiola',820); insert into empleados values('Gomez Gaston',740); insert into empleados values('Huerta Hernan',1050);
3- Muestre la suma total de todos los sueldos realizando un "select" (5400)
4- Se necesita incrementar los sueldos en forma proporcional, en un 10% cada vez y controlar que la suma total de sueldos no sea menor a $7000, si lo es, el bucle debe continuar y volver a incrementar los sueldos, en caso de superarlo, se saldrá del ciclo repetitivo; es decir, este bucle continuará el incremento de sueldos hasta que la suma de los mismos llegue o supere los 7000.
5- Verifique que los sueldos han sido incrementados y la suma de todos los sueldos es superior a 7000
6- Muestre el sueldo máximo realizando un "select"
7- Se necesita incrementar los sueldos en forma proporcional, en un 5% cada vez y controlar que el sueldo máximo alcance o supere los $1600, al llegar o superarlo, el bucle debe finalizar. Incluya una variable contador que cuente cuántas veces se repite el bucle
8- Verifique que los sueldos han sido incrementados y el sueldo máximo es igual o superior a 1600
9- Muestre el sueldo mínimo realizando un "select"
10- Se necesita incrementar los sueldos en forma proporcional, en un 10% cada vez y controlar que el sueldo mínimo no supere los $900. Emplee la sintaxis "if CONDICION then exit"
11- Muestre el sueldo mínimo realizando un "select"
Ver solucióndrop table empleados; create table empleados( nombre varchar2(40), sueldo number(6,2) ); insert into empleados values('Acosta Ana',550); insert into empleados values('Bustos Bernardo',850); insert into empleados values('Caseros Carolina',900); insert into empleados values('Dominguez Daniel',490); insert into empleados values('Fuentes Fabiola',820); insert into empleados values('Gomez Gaston',740); insert into empleados values('Huerta Hernan',1050); select sum(sueldo) from empleados; declare total number; begin loop update empleados set sueldo=sueldo+(sueldo*0.1); select sum(sueldo) into total from empleados; exit when total>7000; end loop; end; / select sueldo from empleados; select sum(sueldo) from empleados; select max(sueldo) from empleados; set serveroutput on; execute dbms_output.enable (20000); declare maximo number; contador number:=0; begin loop update empleados set sueldo=sueldo+(sueldo*0.05); contador:=contador+1; select max(sueldo) into maximo from empleados; exit when maximo>1600; end loop; dbms_output.put_line(contador); end; / select sueldo from empleados; select max(sueldo) from empleados; select min(sueldo) from empleados; declare minimo number; begin loop select min(sueldo) into minimo from empleados; if (minimo+minimo*0.1>900) then exit; else update empleados set sueldo=sueldo+(sueldo*0.1); end if; end loop; end; / select min(sueldo) from empleados;