Introducción a PL/SQL en MySQL

PL/SQL en MySQL


Introducción a PL/SQL (Universidad de Sevilla)

Base de datos de proyectos:

proyectosDB.sql

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

MySQL Cursor

Trigger

Qué son los triggers

Cómo crear y utilizar Triggers en MySQL

Deja una respuesta