Está en la página 1de 5

 Stored procedure with if

1. Crear un procedimiento almacenado que reciba el nombre de dos dept y muestre el


nombre del dept que tiene más empleados y su cantidad.

delimiter $$
create procedure SPEMPLEADOS (
in dept1 varchar(20),
in dept2 varchar(20))
begin
declare canti1 int;
declare canti2 int;
select count(*) into canti1 from emp e
join dept d
on d.dept_no=e.dept_NO
where d.dnombre=dept1;
select count(*) into canti2 from emp e
join dept d
on d.dept_no=e.dept_no
where d.dnombre=dept2;
if canti1>canti2 then
select dept1,canti1;
elseif canti2>canti1 then
select dept2,canti2;
else
select dept1,dept2,canti1;
end if;
end $$
delimiter ;

2. Crear un procedimiento almacenado que al ingresar “MÁXIMO” me muestre el mayor


salario que está ganando un empleado y al ingresar “MINIMO” el mínimo salario que
esta ganando un empleado.

DELIMITER $$
CREATE PROCEDURE SP(
IN ORDENAMIENTO VARCHAR(20))
BEGIN
IF ORDENAMIENTO='MINIMO' THEN
SELECT apellido, MIN(SALARIO) FROM EMP ORDER BY
APELLIDO ;
ELSEIF ORDENAMIENTO='MAXIMO' THEN
SELECT APELLIDO,MAX(SALARIO) FROM EMP ORDER BY
APELLIDO ;
END IF;
END
$$
DELIMITER ;
3. Crear un procedimiento almacenado que al ingresar “TOTAL” muestre la suma de todos
los salarios.

DELIMITER $$
CREATE PROCEDURE SPSUMA(
IN SUMA VARCHAR(20))
BEGIN
IF SUMA='TOTAL' THEN
SELECT SUM(SALARIO) FROM EMP ;
END IF;
END
$$
DELIMITER ;

4. Crear un procedimiento almacenado que muestre los hombres y mujeres que hay en la
tabla enfermos.

DELIMITER $$
CREATE PROCEDURE SPSEXO(
IN ORDENAMIENTO VARCHAR(20))
BEGIN
IF ORDENAMIENTO='MUJERES' THEN
SELECT apellido ,S FROM ENFERMO where S='F ';
ELSEIF ORDENAMIENTO='VARONES' THEN
SELECT apellido ,S FROM ENFERMO where S='M';
END IF;
END
$$
DELIMITER ;
5. Crear un procedimiento almacenado que muestre las tablas de manera ascendente y
descendente de la tabla enfermos

DELIMITER $$
CREATE PROCEDURE SPASCDESC(
IN ORDENAR VARCHAR(20))
BEGIN
IF ORDENAR='ASC' THEN
SELECT APELLIDO, FECHA_NAC FROM ENFERMO ORDER BY
apellido ASC;
ELSEIF ORDENAR='DESC' THEN
SELECT APELLIDO, FECHA_CAN FROM ENFERMO ORDER BY
apellido DESC;
END IF;
END
$$
DELIMITER ;

6. Crear un procedimiento almacenado que muestre los 3 primeras tablas y las 3 ultimas
tablas.

delimiter $$
create procedure SPOFICIO (
in oficio1 varchar(20))
begin
IF oficio1='primeros' then
SELECT * FROM EMP WHERE emp_no LIMIT 3;
ELSEIF OFICIO1='ULTIMOS' then
(SELECT * FROM EMP order by emp_no desc LIMIT 3)order by
EMP_NO ASC;
end if;
end
$$
delimiter ;
7. Crear un procedimiento almacenado que liste los doctores que hay en cada
especialidad.

DELIMITER $$
CREATE PROCEDURE SPESPECIALIDAD(
IN ORDENAMIENTO VARCHAR(20))
BEGIN
IF ORDENAMIENTO='Psiquiatria' THEN
SELECT apellido ,ESPECIALIDAD FROM DOCTOR where
ESPECIALIDAD ='Psiquiatria';
ELSEIF ORDENAMIENTO='Cardiologia' THEN
SELECT apellido ,ESPECIALIDAD FROM DOCTOR where
ESPECIALIDAD='Cardiologia';
ELSEIF ORDENAMIENTO='Urologia' THEN
SELECT apellido ,ESPECIALIDAD FROM DOCTOR where
ESPECIALIDAD='Urologia';
ELSEIF ORDENAMIENTO='Pediatria' THEN
SELECT apellido ,ESPECIALIDAD FROM DOCTOR where
ESPECIALIDAD='Pediatria';
ELSEIF ORDENAMIENTO='Neurologia' THEN
SELECT apellido ,ESPECIALIDAD FROM DOCTOR where
ESPECIALIDAD='Neurologia';
ELSEIF ORDENAMIENTO='Ginecologia' THEN
SELECT
apellido ,ESPECIALIDAD FROM DOCTOR where
ESPECIALIDAD='Ginecologia';
END IF;

END
$$
DELIMITER ;
8. Crear un procedimiento almacenado que muestre cuantas personas tienen el mismo
oficio.

DELIMITER $$
CREATE PROCEDURE SPnum(
IN ORDENAMIENTO VARCHAR(20))
BEGIN
IF ORDENAMIENTO='empleado' THEN
SELECT COUNT(OFICIO) FROM EMP where oficio ='empleado' ;
ELSEIF ORDENAMIENTO='vendedor' THEN
SELECT COUNT(oficio) FROM EMP where oficio='vendedor';
ELSEIF ORDENAMIENTO='director' THEN
SELECT COUNT(oficio) FROM EMP where oficio='director';
ELSEIF ORDENAMIENTO='analista' THEN
SELECT COUNT(oficio) FROM EMP where oficio='analista';
ELSEIF ORDENAMIENTO='PRESIDENTE' THEN
SELECT COUNT(oficio)FROM EMP where oficio='PRESIDENTE';
END IF;
END
$$
DELIMITER ;
9. Crear un procedimiento almacenado que al ingresar el nombre del oficio muestre la
suma de sus salarios.

CREATE PROCEDURE SPnum(


IN ORDENAMIENTO VARCHAR(20))
BEGIN
IF ORDENAMIENTO='empleado' THEN
SELECT COUNT(OFICIO) , SUM(SALARIO) FROM EMP where oficio
='empleado' ;
ELSEIF ORDENAMIENTO='vendedor' THEN
SELECT COUNT(oficio) FROM EMP where oficio='vendedor';
ELSEIF ORDENAMIENTO='director' THEN
SELECT COUNT(oficio) ,SUM(SALARIO) FROM EMP where
oficio='director';
ELSEIF ORDENAMIENTO='analista' THEN
SELECT COUNT(oficio) , SUM(SALARIO) FROM EMP where
oficio='analista';
ELSEIF ORDENAMIENTO='PRESIDENTE' THEN
SELECT COUNT(oficio), SUM(SALARIO) FROM EMP where
oficio='PRESIDENTE';
END IF;
END
$$
DELIMITER ;

10. Crear un procedimiento almacenado que al ingresar el nombre del oficio muestre la
suma de sus salarios.

También podría gustarte