Les traigo algunos ejemplos de procedimientos almacenados, para que los analicen y los comprendan, cualquier cosa, saben que pueden escribir y preguntar. Saludos
É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.
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
$$
Hola, donde puedo encontrar la base de datos para practicar? Saludos
ResponderBorrarHola, digo lo mismo que tú Isleg, debería hacer referencia a la base de datos para que podamos hacer los ejemplos.
ResponderBorrarMal, muy mal...
:-(