Vous êtes sur la page 1sur 3

Procedures:

---------------------------------------------------------
1) Créer une procédure stockée permettant d’ajouter un Nouveau Produit

DELIMITER //

CREATE PROCEDURE PS01(IN I INT, IN N VARCHAR(30), IN P DECIMAL(10, 2), IN Q INT)


BEGIN
DECLARE productCount INT;

-- Check if the product with given ID exists


SELECT COUNT(*) INTO productCount FROM Produit WHERE IDProduit = I;

-- If productCount is 0, the product does not exist, so we can insert it


IF productCount = 0 THEN
INSERT INTO Produit (IDProduit, NomProduit, Prix, QuantiteDisponible)
VALUES (I, N, P, Q);
SELECT 'Le produit a été ajouté avec succès.' AS Result;
ELSE
SELECT 'Le produit existe déjà.' AS Result;
END IF;
END //

DELIMITER ;
-----------------------------------------------------------
2)Créer une procédure stockée permettant d’obtenir la Liste des Clients

DELIMITER //
create procedure PS02()
BEGIN
select * from Client;
END //
DELIMITER ;
------------------------------------------------------------
3)Créer une procédure stockée permettant de mettre à Jour le Prix d'un Produit

DELIMITER //
create procedure PS03(ID int,NouveauPrix DECIMAL)
BEGIN
update produit
set prix=NouveauPrix
where ID=IDProduit ;
select 'le prix il est bien mise a jour' as result;
END //
DELIMITER ;
------------------------------------------------------------
4)Créer une procédure stockée permettant de calculer le Total des Ventes d'un
Client

DELIMITER //
create procedure PS04(ID int)
BEGIN
select sum(PrixVente) as 'Total des Ventes' from LigneDeCommande LC
inner join Commande C on LC. IDCommande=C. IDCommande
inner join Client Cl on C.IDClient=Cl.IDClient
where ID=Cl.IDClient;
END //
DELIMITER ;
------------------------------------------------------------
5)Créer une procédure stockée permettant d’archiver les Commandes Vieilles de
Plus d'un An

DELIMITER //

CREATE PROCEDURE PS05()


BEGIN
DECLARE cutoffDate DATE;
SET cutoffDate = DATE_SUB(NOW(), INTERVAL 1 YEAR);
CREATE TABLE Archives AS
SELECT *
FROM Commande
WHERE DateDeCommande < cutoffDate;

SELECT * FROM Archives;


END //

DELIMITER ;
---------------------------------------------------------------
6)Créer une procédure stockée permettant de calculer la Marge Bénéficiaire Totale
DELIMITER //

CREATE PROCEDURE PS06()


BEGIN
DECLARE totalChiffreAffaires DECIMAL(10,2);
DECLARE totalCout DECIMAL(10,2);
DECLARE margeBeneficiaireTotale DECIMAL(10,2);

SELECT SUM(PrixVente * Quantite) INTO totalChiffreAffaires


FROM Lignedecommande;

SELECT SUM(Prix * Quantite) INTO totalCout


FROM Lignedecommande lc
JOIN Produit p ON lc.IDProduit = p.IDProduit;

SET margeBeneficiaireTotale = ((totalChiffreAffaires - totalCout) /


totalChiffreAffaires) * 100;

SELECT margeBeneficiaireTotale AS MargeBeneficiaireTotale;

END //

DELIMITER ;
---------------------------------------------------------------------
7)Créer une procédure stockée Générer un Rapport de Ventes Mensuel
DELIMITER //

CREATE PROCEDURE PS07(IN mois INT, IN annee INT)


BEGIN
DECLARE debutMois DATE;
DECLARE finMois DATE;

SET debutMois = STR_TO_DATE(CONCAT(annee, '-', mois, '-01'), '%Y-%m-%d');


SET finMois = LAST_DAY(debutMois);

SELECT
DATE_FORMAT(DateDeCommande, '%Y-%m-%d') AS DateCommande,
NomProduit,
Quantite,
PrixVente,
Quantite * PrixVente AS MontantTotal
FROM
Lignedecommande lc
JOIN Produit p ON lc.IDProduit = p.IDProduit
WHERE
DateDeCommande BETWEEN debutMois AND finMois;

END //

DELIMITER ;

Vous aimerez peut-être aussi