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

Entradas relacionadas: