Desarrollo de Procedimientos y Funciones PL SQL en Oracle
Enviado por Chuletator online y clasificado en Matemáticas
Escrito el en
español con un tamaño de 3,01 KB
Introducción a los Procedimientos y Cursores en PL/SQL
A continuación, se presenta la implementación de un procedimiento que utiliza dos cursores, uno para la tabla Emple y otro para la tabla Depart, cumpliendo con los requisitos de filtrado y visualización de datos.
Requisitos del Ejercicio 1
- Visualizar el apellido, oficio, salario y el nombre del departamento de todos los empleados.
- Mostrar únicamente aquellos empleados cuyo salario sea mayor que el valor devuelto por la función de cálculo salarial.
Función Mediar
Create or replace function mediar (departamento emple.dept_no%type)
return number
as
cou number;
begin
select avg(salario) into cou from emple where dept_no = departamento;
return cou;
end mediar;Procedimiento Visualizar (Primer Ejercicio)
Create or replace procedure visualizar (departamento emple.dept_no%type)
as
media number;
cursor cur1 is select * from emple;
cursor cur2 is select * from depart;
begin
media := mediar(departamento);
for i in cur2 loop
for j in cur1 loop
if i.dept_no = j.dept_no then -- [IGUALAMOS CAMPOS]
if j.salario > media then
dbms_output.put_line(j.apellido || ' ' || j.oficio || ' ' || j.salario || ' ' || i.dnombre);
end if;
end if;
end loop;
end loop;
end visualizar;Reportes y Listados con Procedimientos Almacenados
Requisitos del Ejercicio 2
Escribir un procedimiento llamado Visualizar que realice las siguientes acciones:
- Mostrar cada empleado con su apellido y salario.
- Por cada departamento, mostrar el número de empleados y la suma total de los salarios.
- Al final del listado, mostrar el número total de empleados y la suma global de todos los salarios.
Procedimiento Visualizar (Segundo Ejercicio)
Create or replace procedure Visualizar
is
cursor cur1 is select * from emple;
cursor cur2 is select sum(salario) "Suma", count(*) "Total" from emple group by dept_no;
empleados number;
ganar number;
begin
for i in cur1 loop
dbms_output.put_line(i.apellido || ' ' || i.salario);
end loop;
for j in cur2 loop
dbms_output.put_line(j.suma || ' ' || j.total);
end loop;
select count(*), sum(salario) into empleados, ganar from emple;
dbms_output.put_line(empleados || ' ' || ganar);
end visualizar;
/Creación de Funciones de Conteo
Requisitos del Ejercicio 3
Crea una función que, al introducir el número de departamento, devuelva la cantidad exacta de empleados asignados a dicho departamento.
Función Counter
Create or replace function counter(departamento emple.dept_no%type)
return number
as
cou number;
begin
select count(*) into cou from emple where dept_no = departamento;
return cou;
end counter;