Introducción a PL/SQL en MySQL
PL/SQL en MySQL
Introducción a PL/SQL (Universidad de Sevilla)
Base de datos de proyectos:
Creación de un procedimiento
Usando la base de datos de Proyectos, crear un nuevo proyecto con código EEC (Estudio de Enfermedades Contagiosas), cambiar los empleados que trabajan en el proyecto AEE al EEC y borrar el AEE.
DELIMITER $$ CREATE PROCEDURE `Cambios`() BEGIN INSERT INTO proyecto (cdpro, nombre, cddep) VALUES ('EEC', 'Estudio de Enf. Contag.', '03'); UPDATE trabaja SET cdpro = 'EEC' WHERE cdpro = 'AEE'; DELETE FROM proyecto WHERE cdpro = 'AEE'; SELECT * FROM proyecto; END$$ DELIMITER ;
Ejecución del procedimiento:
CALL Cambios();
Modificar el sueldo de un empleado pasando los parámetros del nuevo sueldo y el nombre del empleado:
DELIMITER $$ CREATE PROCEDURE `ActualizarSueldo`(IN `NuevoSueldo` FLOAT(6,2), IN `NombreEmpleado` VARCHAR(30)) BEGIN UPDATE empleado SET salario = NuevoSueldo WHERE nombre = NombreEmpleado; SELECT nombre, salario FROM empleado WHERE Nombre = NombreEmpleado; END$$ DELIMITER ;
Ejecución:
SET @p0='1000'; SET @p1='Pablo Verde'; CALL `ActualizarSueldo`(@p0, @p1);
Cursor implícito:
Contar los empleados que trabajan en el proyecto EEC:
DELIMITER $$ CREATE PROCEDURE `Cuenta`() BEGIN DECLARE valor INT; SELECT COUNT(*) INTO valor FROM trabaja WHERE cdpro ="EEC"; SELECT CONCAT ("Empleados que trabajan en el proyecto EEC: ", valor) AS Resultado; SELECT valor AS "Empleados que trabajan en el proyecto EEC"; END$$ DELIMITER ;
Ejecución:
CALL `Cuenta`();
Excepciones
Manejar la excepción que se puede producir al añadir un nuevo proyecto
DELIMITER $$ CREATE PROCEDURE `InsertarProyecto`(IN `codigo` VARCHAR(3), IN `nombre` VARCHAR(40), IN `departamento` VARCHAR(2)) BEGIN -- exit si hay una clave duplicada DECLARE EXIT HANDLER FOR 1062 BEGIN SELECT CONCAT('Clave duplicada: ', codigo) AS mensaje; END; -- insertar un nuevo proyecto INSERT INTO proyecto(cdpro, nombre, cddep) VALUES(codigo, nombre, departamento); -- muestra los datos del proyecto SELECT * FROM proyecto WHERE cdpro = codigo; END$$ DELIMITER ;
Funciones
Crear una función que reciba como parámetro un código de proyecto y devuelva el número de empleados que trabaja en ese proyecto
DELIMITER $$ CREATE FUNCTION `CuentaEmpleados`(`CodigoProyecto` CHAR(3)) RETURNS int DETERMINISTIC BEGIN DECLARE cuenta INT; SELECT COUNT(*) INTO cuenta FROM trabaja WHERE cdpro = CodigoProyecto; RETURN cuenta; END$$ DELIMITER ;
Cursor
Trigger
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.