-- Attention, la procédure suivante ne fait que remplire l'inventaire à partir d'un panier.
-- le prenicipe , on utilise un curseur pour lire le contenu du panier et on insère dans l'inventaire
-- si l'item est déjà dans l'invantaire, il suffit de mettre à jour sa quantité.
-- on supprime l'item du panier
use dbsaliha;
drop procedure majInventaire;
DELIMITER |
CREATE PROCEDURE majInventaire(in pidJoueur int)
BEGIN
DECLARE pqtPanier integer ;
DECLARE pidItem integer;
DECLARE lafin INT DEFAULT 0;
DECLARE curseur1 CURSOR FOR SELECT idItem,quantiteAchat FROM Paniers;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET lafin = 1;
OPEN curseur1;
	majPanier: LOOP
	FETCH curseur1 INTO pidItem,pqtPanier;
		IF lafin= 1 THEN
		LEAVE majPanier;
		END IF;
	INSERT INTO Inventaires VALUES (pidItem, pidJoueur,pqtPanier) 
		ON DUPLICATE KEY UPDATE quantiteInventaire = quantiteInventaire + pqtPanier;
         DELETE FROM Paniers WHERE idItem = pidItem AND idJoueur = pIdJoueur;
		END LOOP majPanier ;
CLOSE curseur1;
END|

call majInventaire(100);
select * from Inventaires;
select * from Paniers;
insert into Paniers values (7,100,2);
insert into Paniers values (8,100,2);
insert into Paniers values (2,100,2);




