Skip to content
Snippets Groups Projects
Commit c3f490dc authored by Elias Leinenweber's avatar Elias Leinenweber
Browse files

commit random parce que ca marche

parent 9e6668a6
No related merge requests found
......@@ -3,13 +3,13 @@ SET SERVEROUTPUT ON;
CREATE OR REPLACE PACKAGE GestionCommandes IS
PROCEDURE AfficheProchainesCommandes;
FUNCTION CoutLigneCommande(numcom commande.numc%TYPE, numtarif tarif.numt%TYPE)
RETURN tarif.prix%TYPE;
RETURN REAL;
FUNCTION CoutCommande(numcom commande.numc%TYPE)
RETURN tarif.prix%TYPE;
RETURN REAL;
FUNCTION GainJour(jour DATE)
RETURN tarif.prix%TYPE;
RETURN REAL;
FUNCTION GainMois(annee NUMBER, mois NUMBER)
RETURN tarif.prix%TYPE;
RETURN REAL;
PROCEDURE Facture(numcom commande.numc%TYPE);
PROCEDURE MeilleureCommandeMoisCourant;
END GestionCommandes;
......@@ -37,6 +37,7 @@ AS
GROUP BY c.numc, dateheure_cmd,adresse1, adresse2, codepostal, ville
ORDER BY dateheure_cmd;
BEGIN
DBMS_OUTPUT.PUT_LINE('---------------------------------');
FOR cmd IN curProchainesCommandes LOOP
DBMS_OUTPUT.PUT_LINE('Numéro commande : '|| cmd.numc);
DBMS_OUTPUT.PUT_LINE('Quantité de pizzas : '|| cmd.qtPiz);
......@@ -46,6 +47,7 @@ BEGIN
DBMS_OUTPUT.PUT_LINE('Complément d''adresse : '|| cmd.adresse2);
END IF;
DBMS_OUTPUT.PUT_LINE('Code postal : '|| cmd.codepostal);
DBMS_OUTPUT.PUT_LINE('---------------------------------');
END LOOP;
END AfficheProchainesCommandes;
......@@ -55,9 +57,9 @@ END AfficheProchainesCommandes;
* remises).
*/
FUNCTION CoutLigneCommande(numcom commande.numc%TYPE, numtarif tarif.numt%TYPE)
RETURN tarif.prix%TYPE
RETURN REAL
AS
cout tarif.prix%TYPE;
cout REAL;
BEGIN
SELECT ((100 - NVL(l.remise, 0)) / 100) * l.quantite * t.prix
INTO cout
......@@ -75,9 +77,9 @@ END CoutLigneCommande;
* commande (en tenant compte des éventuelles remises).
*/
FUNCTION CoutCommande(numcom commande.numc%TYPE)
RETURN tarif.prix%TYPE
RETURN REAL
AS
cout tarif.prix%TYPE;
cout REAL;
CURSOR curLigneCmd IS
SELECT numc, tarif
......@@ -98,9 +100,9 @@ END CoutCommande;
* passé en paramètre.
*/
FUNCTION GainJour(jour DATE)
RETURN tarif.prix%TYPE
RETURN REAL
AS
gain tarif.prix%TYPE;
gain REAL;
CURSOR curCmdJour IS
SELECT numc
......@@ -121,9 +123,9 @@ END GainJour;
* sur un mois donné.
*/
FUNCTION GainMois(annee NUMBER, mois NUMBER)
RETURN tarif.prix%TYPE
RETURN REAL
AS
gain tarif.prix%TYPE;
gain REAL;
CURSOR commandesDuMois IS
SELECT numc
......@@ -151,7 +153,7 @@ END GainMois;
PROCEDURE Facture(numcom commande.numc%TYPE)
AS
datec commande.dateheure_cmd%TYPE;
total tarif.prix%TYPE;
total REAL;
CURSOR lignesFacture IS
SELECT UPPER(p.nompiz) pizza, t.taille taille, l.quantite qte,
......@@ -200,20 +202,24 @@ END Facture;
*/
PROCEDURE MeilleureCommandeMoisCourant
AS
meilleureCmd commande.numc%TYPE;
coutMeilleureCmd tarif.prix%TYPE;
BEGIN
SELECT numc, CoutCommande(numc)
INTO meilleureCmd, coutMeilleureCmd
-- on utlise un cursor pour pouvoir afficher plusieurs commandes dans le cas
-- où il ya plusieurs meilleures commandes !
CURSOR curMeilleuresCmd IS
SELECT numc, CoutCommande(numc) cout
FROM commande
WHERE TO_CHAR(SYSDATE, 'MM/YYYY') = TO_CHAR(dateheure_cmd, 'MM/YYYY')
AND CoutCommande(numc) =
(SELECT MAX(CoutCommande(numc))
FROM commande
WHERE TO_CHAR(SYSDATE, 'MM/YYYY') = TO_CHAR(dateheure_cmd, 'MM/YYYY'));
DBMS_OUTPUT.PUT_LINE('Meilleure commande du mois : ' || meilleureCmd);
DBMS_OUTPUT.PUT_LINE('Avec un coût de : ' || coutMeilleureCmd);
BEGIN
DBMS_OUTPUT.PUT_LINE('---------------------------------');
FOR meilleureCmd IN curMeilleuresCmd LOOP
DBMS_OUTPUT.PUT_LINE('Meilleure commande du mois : ' || meilleureCmd.numc);
DBMS_OUTPUT.PUT_LINE('Avec un coût de : ' || meilleureCmd.cout);
DBMS_OUTPUT.PUT_LINE('---------------------------------');
END LOOP;
END MeilleureCommandeMoisCourant;
END;
/
......@@ -3,8 +3,7 @@
* numt, numpiz, taille, prix, date_deb_tarif, date_fin_tarif) en cas de
* modification de tarif.
*/
CREATE OR REPLACE TRIGGER
HistoTarifs
CREATE OR REPLACE TRIGGER HistoTarifs
AFTER UPDATE ON tarif FOR EACH ROW
BEGIN
INSERT INTO historique_tarifs (numt, pizza, taille, prix, date_deb_tarif)
......
# D31 Projet
# Mini-projet D31
Pizza
\ No newline at end of file
La pizzeria *Pronto* propose un service de livraison de pizzas avec des
commandes qui peuvent être passées par téléphone ou sur le site Web. Ce service
s'appuie sur une base de données.
......@@ -263,17 +263,23 @@ INSERT INTO ligne_cmd VALUES (1313, 15, 2, NULL);
-- AJOUT DE NOS VALEURS
-- TEST de GestionCommandes.AfficheProchainesCommandes, 6.a)
-- commande doit être affiché
INSERT INTO commande VALUES (666, 'L.', 'Elias', '6666666666', 'Route de la richesse', 'Manoir luxuriant', 67000, 'STRASBOURG',
SYSDATE +INTERVAL '30' MINUTE, NULL, NULL, NULL);
INSERT INTO ligne_cmd VALUES (666, 2, 1, 5);
INSERT INTO ligne_cmd VALUES (666, 10, 12, NULL);
INSERT INTO commande VALUES (777, 'F.', 'Francois', '0123456789', 'Avenue Oblique', 'etage 2', 60568, 'SAINT-AUBIN-SOUS-ERQUERY',
-- commande doit être affiché
INSERT INTO commande VALUES (777, 'F.', 'Francois', '0123456789', 'Avenue Oblique', NULL, 60568, 'SAINT-AUBIN-SOUS-ERQUERY',
SYSDATE +INTERVAL '45' MINUTE, NULL, NULL, NULL);
INSERT INTO ligne_cmd VALUES (777, 4, 2, 20);
INSERT INTO ligne_cmd VALUES (777, 18, 12, 10);
INSERT INTO ligne_cmd VALUES (777, 6, 4, NULL);
-- commande ne doit pas être affiché
INSERT INTO commande VALUES (888, 'Z.', 'Mathieu', '0123456789', 'Route des mathématiques', 'et de S32', 67000, 'STRASBOURG',
SYSDATE -INTERVAL '45' MINUTE, NULL, NULL, NULL);
INSERT INTO ligne_cmd VALUES (888, 4, 2, 20);
INSERT INTO ligne_cmd VALUES (888, 18, 12, 10);
INSERT INTO ligne_cmd VALUES (888, 6, 4, NULL);
-- TEST Triger 7.
-- la modification d'un tarif devrait insérer des lignes dans la table
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment