Procedimientos Almacenados en PL/SQL: Ejemplos con Bucles
Enviado por Chuletator online y clasificado en Inglés
Escrito el en español con un tamaño de 2,32 KB
Procedimientos Almacenados con Bucles en PL/SQL
1. Mostrar el Nombre de Cada Departamento y el Número de Empleados
Este procedimiento muestra el nombre de cada departamento y el número de empleados que tiene, utilizando bucles FOR y WHILE.
Utilizando WHILE:
create or replace procedure DEPARTAMENT_NUM_EMPLE as
CURSOR cur11 IS
select dnombre, count(emp_no)
from emple join depart on emple.dept_no = depart.dept_no
group by emple.dept_no, depart.dnombre;
nombre_departamento depart.dnombre%type;
total_empleados emple.emp_no%type;
begin
OPEN cur11;
fetch cur11 INTO nombre_departamento, total_empleados;
while cur11%found loop
dbms_output.put_line(nombre_departamento || ' ' || total_empleados);
fetch cur11 INTO nombre_departamento, total_empleados;
end loop;
close cur11;
end DEPARTAMENT_NUM_EMPLE;
/
Utilizando FOR:
create or replace procedure DEPARTAMENT_NUM_EMPLE as
CURSOR cur11 IS
select dnombre, count(emp_no) "TOTAL"
from emple join depart on emple.dept_no = depart.dept_no
group by emple.dept_no, depart.dnombre;
begin
for V IN cur11 loop
dbms_output.put_line(V.dnombre || ' ' || V.TOTAL);
end loop;
end DEPARTAMENT_NUM_EMPLE;
/
2. Mostrar el Apellido y el Salario de los Cinco Empleados con el Salario Más Alto
Este procedimiento muestra el apellido y el salario de los cinco empleados que tienen el salario más alto, utilizando bucles FOR y WHILE.
Utilizando WHILE:
create or replace procedure APELLIDO_5MAX_SALARIO AS
CURSOR cur1 IS
select nombre, max(salario) from emple group by nombre;
apellido emple.nombre%type;
max_salario emple.salario%type;
begin
open cur1;
fetch cur1 into apellido, max_salario;
while cur1%found loop
dbms_output.put_line(apellido || ' ' || max_salario);
fetch cur1 into apellido, max_salario;
end loop;
close cur1;
end APELLIDO_5MAX_SALARIO;
/
Utilizando FOR:
create or replace procedure APELLIDO_5MAX_SALARIO AS
CURSOR cur1 IS
select nombre, max(salario) "MAXIMO" from emple group by nombre;
begin
FOR X IN cur1 loop
dbms_output.put_line(X.nombre || ' ' || X.MAXIMO);
end loop;
end APELLIDO_5MAX_SALARIO;
/