miércoles, 24 de agosto de 2016

Procedimientos Almacenados MySQL (MariaDB) Parte III - Ejemplos

Les traigo algunos ejemplos de procedimientos almacenados, para que los analicen y los comprendan, cualquier cosa, saben que pueden escribir y preguntar. Saludos

Ejercicio 1
Crear un procedimiento que me permita mostrar la tabla general de un torneo, el criterio para la tabla general es en primer lugar el número de puntos, en segundo lugar, la diferencia de goles y en tercer lugar los goles a favor.

DROP PROCEDURE IF EXISTS tablageneral;
DELIMITER $$
CREATE procedure tablageneral(idTorneo int)
BEGIN
SET @tipo=0;
select e.nombre, count(e.nombre) as JJ, (select count(puntos) from puntos where puntos=3 and e.idequipo = idequipo and puntos.idtorneo = idTorneo) as JG,
(select count(puntos) from puntos where puntos=1 and e.idequipo = idequipo and puntos.idTorneo = idTorneo) as JE,
(select count(puntos) from puntos where puntos=0 and e.idequipo = idequipo and puntos.idTorneo = idTorneo) as JP,
sum(puntos.puntos) as Puntos, sum(goles_favor) as GF,  sum(goles_contra) as GC, sum(goles_favor)-sum(goles_contra) as DIF from puntos
inner join equipos e on e.idequipo=puntos.idequipo
where puntos.idtorneo=idTorneo
group by e.nombre order by sum(puntos) desc, sum(goles_favor)-sum(goles_contra), sum(goles_favor) asc;
END;

        $$

Ejercicio 2

Crear un procedimiento que muestre los goles anotados en un torneo determinado y en una jornada específica
  
DROP PROCEDURE IF EXISTS golesjornada;
delimiter $$
CREATE PROCEDURE golesjornada(torneo int, j varchar(15))
BEGIN
SELECT sum(golesvisitante)+sum(goleslocal) as Goles
from PARTIDOS where idtorneo = torneo
and jornada=j;
END;
$$


Ejercicio 3

Realizar mediante procedimiento almacenado que me permita actualizar el campo Ganador de la tabla partidos en base a quien gano (Local, Empate, Visitante), además de eso, actualizar los puntos ganados por el equipo que gano (3,1 o 0), únicamente de los partidos que no han sido procesados

DROP PROCEDURE IF EXISTS ganador;
delimiter $$
CREATE PROCEDURE ganador()
BEGIN

UPDATE  partidos
SET ganador = IF(goleslocal = golesvisitante, 'E', IF(goleslocal<golesvisitante, 'V', 'L')),
puntos_local = IF(ganador='E',1,if(ganador='L',3,0)),
puntos_visitante = IF(ganador='E',1,if(ganador='L',0,3))
where fecha_procesado is null;



END
$$

Éstos son algunos ejemplos prácticos de procedimientos almacenados, en nuestra siguiente entrega veremos el uso de los cursores en MySQL (MariaDB), y también el uso de transacciones, espero les haya gustado el post, espero comenten, compartan, den +1, o clic en algún anuncio que les interese.

Muchas Gracias

Banderas de Visitantes

Flag Counter