/* crea un procedimiento o funcion que a partir de las fechas de nacimiento, cree una tabla con un calendario de cumpleaños */
CREATE DEFINER=`3eva`@`%` PROCEDURE `genera_calendario`(
IN `anyo` INT
)
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
CREATE TABLE if not exists cumples (
fecha DATE PRIMARY key);
DELETE FROM cumples;
-- TRUNCATE cumples;
INSERT INTO cumples
SELECT DISTINCT
CONCAT_WS("/",anyo,month(a.fecha_nac),day(a.fecha_nac))
FROM alumnos a;
END
/* crea una funcion o procedimiento que a partir de una fecha indique cuantos días han pasado o faltan hasta esa fecha */
CREATE DEFINER=`3eva`@`%` FUNCTION `DiasPendientes`(
`pfecha` DATE
)
RETURNS int
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
RETURN datediff(pFecha,NOW());
END
/* crea procedimiento o funcion que inserte la nota de un módulo para un alumnos concreto */
CREATE DEFINER=`3eva`@`%` PROCEDURE `InsertaNota`(
IN `pAlumno` INT,
IN `pModulo` INT,
IN `pNota` INT
)
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
INSERT ignore
INTO notas (fk_alumno,fk_modulo,nota)
VALUES (pAlumno,pModulo,pNota);
END
/* crea procedimiento o funcion que elemine un alumno */
CREATE DEFINER=`3eva`@`%` PROCEDURE `EliminaAlumno`(
IN `pAlumno` INT
)
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
--
DELETE FROM notas WHERE fk_alumno = pAlumno;
DELETE FROM alumnos WHERE id =pAlumno;
END
CREATE DEFINER=`3eva`@`%` FUNCTION `ArreglaTexto`(
`mitxt` VARCHAR(50)
)
RETURNS varchar(200) CHARSET utf8mb4
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE mt VARCHAR(50);
set mt= concat(upper(LEFT(mitxt,1)),
LOWER(SUBSTR(mitxt,2)));
RETURN mt;
END
CREATE DEFINER=`3eva`@`%` PROCEDURE `inserta_alumno`(
IN `p1` VARCHAR(50),
IN `p2` VARCHAR(50),
IN `p3` DATE
)
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
INSERT INTO alumnos (id,nombre, apellidos,fecha_nac)
VALUES (NULL,ArreglaTexto(p1),
ArreglaTexto(p2),p3);
END
CREATE DEFINER=`3eva`@`%` PROCEDURE `renew_alumnos`()
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DROP TABLE if EXISTS tmp;
CREATE TABLE tmp as
SELECT a.nombre, a.apellidos, a.fecha_nac
FROM alumnos a;
TRUNCATE alumnos;
INSERT INTO alumnos
SELECT NULL, Arreglatexto(t.nombre),
ArreglaTexto(t.apellidos), t.fecha_nac
FROM tmp t;
DROP TABLE tmp;
END