Está en la página 1de 7

/*Construir los siguientes procedimientos almacenados para inserción

de registros:*/

/*TABLA PROFESOR*/

CREATE DEFINER=`root`@`localhost` PROCEDURE `ModificarProfesor`(


in id int,
in nombre varchar(30),
in apellido varchar(30),
in categoria int,
in salario int,
in accion varchar(30)
)
BEGIN
case accion
when 'crear' then
insert into profesor (Id_Prof,Nom_Prof,Ape_Prof,Cat_Prof,Sal_Prof)
values (id,nombre,apellido,categoria,salario);

when 'editar' then


update profesor set
Nom_Prof=nombre, Ape_Prof=apellido, Cat_Prof=categoria, Sal_Prof=salario
where Id_Prof=id;

when 'borrar' then


delete from profesor where Id_Prof=id;

when 'consultar' then


select * from profesor where Id_Prof=id;

end case;
END

/*TABLA CURSO*/
CREATE DEFINER=`root`@`localhost` PROCEDURE `ModificarCurso`(
in codigo int,
in nombre varchar(100),
in horas int,
in valor int,
in accion varchar(30)
)
BEGIN
case accion
when 'crear' then
insert into curso (Cod_Curs,Nom_curs,Horas_curs, Valor_curs)
values (codigo,nombre,horas,valor);

when 'editar' then


update curso set
Nom_curs=nombre, Horas_curs=horas, Valor_curs=valor
where Cod_Curs=codigo;

when 'borrar' then


delete from curso
where Cod_Curs=codigo;

when 'consultar' then


select * from curso
where Cod_Curs=codigo;

end case;
END

/*ESTUDIANTE*/

CREATE DEFINER=`root`@`localhost` PROCEDURE `ModificarEstudiante`(


in id varchar(11),
in nombre varchar(30),
in apellido varchar(30),
in edad int,
in accion varchar(30)
)
BEGIN
case accion

when 'crear' then


insert into estudiante (Id_Estu,Nom_Estu,Ape_Estu,Edad_Estu)
values (id,nombre,apellido,edad);

when 'editar' then


update estudiante set
Id_Estu=id,Nom_Estu=nombre,Ape_Estu=apellido,Edad_Estu=edad
where Id_Estu=id;

when 'borrar' then


delete from estudiante where Id_Estu=id;

when 'consultar' then


select * from estudiante where Id_Estu=id;
end case;

END

/*ESTUDIANTEXCURSO*/

CREATE DEFINER=`root`@`localhost` PROCEDURE `ModificarEstudiantexcurso`(


in codigo int,
in id_estcur varchar(11),
in FechaInicio date,
in accion varchar(30)
)
BEGIN
case accion

when 'crear' then


insert into estudiantexcurso (Cod_Cur_Estcur,Id_Est_Estcur,Fec_Ini_Estcur)
values(codigo,id_estcur,FechaInicio);

when 'editar' then


update estudiantexcurso set
Cod_Cur_Estcur=codigo,Id_Est_Estcur=id_estcur,Fec_Ini_Estcur=FechaInicio
where Cod_Cur_Estcur=codigo;

when 'borrar' then


delete from estudiantexcurso where Cod_Cur_Estcur=codigo;
when 'consultar' then
select * from estudiantexcurso where Cod_Cur_Estcur=codigo;
end case;
END

/*2. En MySQL, construir los procedimientos almacenados para realizar los


siguientes procesos:

• Mostrar los salarios de los profesores ordenados por categoría.*/

CREATE DEFINER=`root`@`localhost` PROCEDURE `salariosProfes`()


BEGIN
select Sal_Prof, Cat_Prof from profesor order by Cat_Prof;
END

/*Mostrar los cursos cuyo valor sea mayor a $500.000.*/

CREATE DEFINER=`root`@`localhost` PROCEDURE `ValorCursos`()


BEGIN
select * from curso where Valor_Curs>500000;
END

/*Mostrar todos los campos de la tabla curso en orden ascendente según el valor*/

CREATE DEFINER=`root`@`localhost` PROCEDURE `Curso_Ascen`()


BEGIN
select * from curso order by Valor_curs asc;
END

/* • Contar el número de estudiantes cuya edad sea mayor a 22.

CREATE DEFINER=`root`@`localhost` FUNCTION `NumeroMayor22`() RETURNS int


BEGIN
declare numero int;

select count(1) into numero


from estudiante
where Edad_Estu>22;
RETURN numero;
END

/* • Mostrar el nombre y la edad del estudiante más joven.*/

CREATE DEFINER=`root`@`localhost` FUNCTION `EstudianteMasJoven`() RETURNS


varchar(30) CHARSET utf8mb4
BEGIN
declare nombre varchar(30);
declare edad varchar(30);

select Nom_Estu, Edad_Estu into nombre, edad from estudiante


where Edad_Estu = (select min(Edad_Estu) from estudiante);

RETURN concat(nombre," ", edad);


END

/* Calcular el valor promedio de los cursos cuyas horas sean mayores a 40.*/
CREATE DEFINER=`root`@`localhost` FUNCTION `ValorPromedio`() RETURNS int
BEGIN
declare promedio decimal (11, 4);
select avg(Valor_curs) into promedio from curso
where Horas_curs > 40;
RETURN promedio;
END

/* Obtener el sueldo promedio de los profesores de la categoría 1.*/

CREATE DEFINER=`root`@`localhost` FUNCTION `PromedioSueldo`() RETURNS int


BEGIN
declare promedio decimal(11,4);
select avg(Sal_Prof) into promedio from profesor
where Cat_Prof = 1;

RETURN promedio;
END

/* Mostrar el nombre del profesor con menor sueldo.*/

CREATE DEFINER=`root`@`localhost` FUNCTION `Menor_Sueldo`() RETURNS varchar(30)


CHARSET utf8mb4
BEGIN
declare nombre varchar(50);
select concat (Nom_Prof, Ape_Prof) into nombre from profesor
where Sal_Prof = (select min(Sal_Prof) from profesor);

RETURN nombre;
END

/* Construir los siguientes disparadores para controlar la actualización y


borrado de registros:
• En MySQL, para las tablas Profesor, Curso, Estudiante.*/

PROFESOR:

TRIGGER ACTUALIZACIÓN

create trigger trg_prof_update


before update on profesor
for each row
begin
insert into aud_prof
(aud_nom_prof_anterior,
aud_ape_prof_anterior,
aud_cat_prof_anterior,
aud_sal_prof_anterior,
aud_nom_prof_nuevo,
aud_ape_prof_nuevo,
aud_cat_prof_nuevo,
aud_sal_prof_nuevo,
aud_fecha_modificacion_prof,
aud_usuario,
aud_doc_prof,
aud_accion)

values
(old.Nom_Prof, old.Ape_Prof, old.Cat_Prof, old.Sal_Prof,
new.Nom_Prof, new.Ape_Prof, new.Cat_Prof, new.Sal_Prof, now(), current_user(),
new.Id_Prof, 'Actualizacion');
end;

TRIGGER BORRAR

create trigger trg_prof_delete


after delete on profesor
for each row
begin
insert into aud_prof(
aud_nom_prof_anterior, aud_ape_prof_anterior,
aud_cat_prof_anterior,
aud_sal_prof_anterior,
aud_nom_prof_nuevo,
aud_ape_prof_nuevo,
aud_cat_prof_nuevo,
aud_sal_prof_nuevo,
aud_fecha_modificacion_prof,
aud_usuario,
aud_doc_prof,
aud_accion)
values(old.Nom_Prof, old.Ape_Prof, old.Cat_Prof, old.Sal_Prof, now(),
current_user(), old.Id_Prof, 'registro eliminado');
end;

CURSO

TRIGGER ACTUALIZAR

DELIMITER //
create trigger trg_curso_update
before update on curso
for each row
begin
insert into aud_curs(
aud_nom_curs_anterior,
aud_horas_curs_anterior,
aud_valor_curs_anterior,
aud_nom_curs_nuevo,
aud_horas_curs_nuevo,
aud_valor_curs_nuevo,
aud_fecha_modificacion,
aud_usuario,
aud_cod_curs,
aud_accion)
values
(old.Nom_curs, old.Horas_curs, old.Valor_curs, new.Nom_curs, new.Horas_curs,
new.Valor_curs, now(),
current_user(), new.Cod_Curs, 'Actualizacion');
end;//

TRIGGER DELETE

DELIMITER //
create trigger trg_curs_delete
after delete on curso
for each row
begin
insert into aud_curs(
aud_nom_curs_anterior,
aud_horas_curs_anterior,
aud_valor_curs_anterior,
aud_fecha_modificacion,
aud_usuario,
aud_cod_curs,
aud_accion)
values(old.Nom_curs, old.Horas_curs, old.Valor_curs,
now(), current_user(), old.Cod_curs, 'Registgro Eliminado');
end; //

ESTUDIANTE

TRIGGER ACTUALIZAR

delimiter //
create trigger trg_estu_update
before update on estudiante
for each row
begin
insert into aud_estu(
aud_nom_estu_anterior,
aud_ape_estu_anterior,
aud_edad_estu_anterior,
aud_nom_estu_nuevo,
aud_ape_estu_nuevo,
aud_edad_estu_nuevo,
aud_fecha_modificacion,
aud_usuario,
aud_Id_Estu,
aud_accion)
values(
old.Nom_Estu, old.Ape_Estu, old.Edad_Estu, new.Nom_Estu, new.ape_estu,
new.Edad_Estu, now(),
current_user(), new.Id_Estu, 'Actualizacion');
end; //

TRIGGER BORRAR

DELIMITER //
create trigger trg_estu_delete
after delete on estudiante for each row
begin
insert into aud_estu(
aud_nom_estu_anterior,
aud_ape_estu_anterior,
aud_edad_estu_anterior,
aud_usuario,
aud_Id_Estu,
aud_accion)
values(
old.Nom_Estu, old.Ape_Estu, old.Edad_Estu, now(), current_user(), old.Id_Estu,
'Registro Borrado');
end; //

También podría gustarte