Advertisement
Guest User

SALUT SALUT

a guest
Feb 13th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE PACKAGE BODY PAQ_PRODUITS AS
  2.  
  3.   PROCEDURE ajouter_simple(le_nom ff_produit.nom%TYPE,
  4.                            le_prix ff_produit.prix%TYPE,
  5.                            la_taille ff_produit.taille%TYPE,
  6.                            la_categ ff_simple.categ%TYPE) AS
  7.  
  8.   la_ref int;
  9.   nb_produits_nom int;
  10.   BEGIN
  11.     IF le_nom IS NULL OR le_prix IS NULL OR la_taille IS NULL OR la_categ IS NULL THEN
  12.       RAISE PARAMETRE_INDEFINI;
  13.     END IF;
  14.    
  15.     IF la_taille NOT IN('petit', 'moyen', 'grand') THEN
  16.       RAISE PB_VALEUR_TAILLE;
  17.     END IF;
  18.    
  19.     IF le_prix <= 0 THEN
  20.       RAISE PRIX_NON_POSITIF;
  21.     END IF;
  22.    
  23.     IF la_categ NOT IN ('boisson','dessert','salade','accompagnement','sandwich') THEN
  24.       RAISE PB_VALEUR_CATEGORIE;
  25.     END IF;
  26.    
  27.     SELECT COUNT(*) INTO nb_produits_nom FROM ff_produit WHERE ff_produit.nom = le_nom;
  28.     IF nb_produits_nom != 0 THEN
  29.       RAISE DOUBLON_NOM_PRODUIT;
  30.     END IF;
  31.  
  32.   la_ref := gen_clef.NEXTVAL;
  33.     BEGIN
  34.       INSERT INTO FF_PRODUIT(P_REF, NOM, PRIX, TAILLE) VALUES(la_ref, le_nom, le_prix, la_taille);
  35.       INSERT INTO FF_SIMPLE(S_REF, CATEG) VALUES(la_ref, la_categ);
  36.     END;
  37.   END ajouter_simple;
  38.  
  39.  
  40.  
  41.   PROCEDURE supprimer_simple(la_ref ff_simple.s_ref%TYPE)  AS
  42.   temp int;
  43.   BEGIN
  44.     IF la_ref IS NULL THEN
  45.       RAISE PARAMETRE_INDEFINI;
  46.     END IF;
  47.    
  48.     SELECT COUNT(*) INTO temp FROM FF_SIMPLE
  49.     WHERE S_REF = la_ref;
  50.     IF temp = 0 THEN
  51.       RAISE PRODUIT_INCONNU;
  52.     END IF;
  53.    
  54.     SELECT COUNT(*) INTO temp FROM FF_CONSTITUE
  55.     INNER JOIN FF_SIMPLE ON S_REF = REF_SIMPLE
  56.     WHERE REF_SIMPLE = la_ref;
  57.     IF temp > 0 THEN
  58.       RAISE PRODUIT_UTILISE;
  59.     END IF;
  60.    
  61.     BEGIN
  62.       DELETE FROM FF_PRODUIT WHERE P_REF = la_ref;
  63.       DELETE FROM FF_SIMPLE WHERE S_REF = la_ref;
  64.     END;
  65.   END supprimer_simple;
  66.  
  67.  
  68.  
  69.  
  70.   PROCEDURE ajouter_menu(le_nom ff_produit.nom%TYPE,
  71.                          le_prix ff_produit.prix%TYPE,
  72.                          la_taille ff_produit.taille%TYPE,
  73.                          la_promo ff_menu.promo%TYPE)  AS
  74.  
  75.   la_ref int;
  76.   temp int;
  77.   BEGIN
  78.     IF le_nom IS NULL OR le_prix IS NULL OR la_taille IS NULL OR la_promo IS NULL THEN
  79.       RAISE PARAMETRE_INDEFINI;
  80.     END IF;
  81.    
  82.     IF la_taille NOT IN('petit', 'moyen', 'grand') THEN
  83.       RAISE PB_VALEUR_TAILLE;
  84.     END IF;
  85.    
  86.     IF le_prix <= 0 THEN
  87.       RAISE PRIX_NON_POSITIF;
  88.     END IF;
  89.    
  90.     SELECT COUNT(*) INTO temp FROM FF_PRODUIT
  91.     WHERE NOM = le_nom;
  92.     IF temp != 0 THEN
  93.       RAISE DOUBLON_NOM_PRODUIT;
  94.     END IF;
  95.    
  96.     la_ref := gen_clef.NEXTVAL;
  97.     BEGIN
  98.       INSERT INTO FF_PRODUIT(P_REF, NOM, PRIX, TAILLE) VALUES(la_ref, le_nom, le_prix, la_taille);
  99.       INSERT INTO FF_MENU(M_REF, PROMO) VALUES(la_ref, la_promo);
  100.     END;
  101.   END ajouter_menu;
  102.  
  103.  
  104.   PROCEDURE supprimer_menu(la_ref ff_menu.m_ref%TYPE)  AS
  105.   temp int;
  106.   BEGIN
  107.     IF la_ref IS NULL THEN
  108.       RAISE PARAMETRE_INDEFINI;
  109.     END IF;
  110.    
  111.     SELECT COUNT(*) INTO temp FROM FF_MENU
  112.     WHERE M_REF = la_ref;
  113.     IF temp != 1 THEN
  114.       RAISE PRODUIT_INCONNU;
  115.     END IF;
  116.    
  117.     BEGIN
  118.       DELETE FROM FF_CONSTITUE WHERE REF_MENU = la_ref;
  119.       DELETE FROM FF_MENU WHERE M_REF = la_ref;
  120.     END;
  121.   END supprimer_menu;
  122.  
  123.   PROCEDURE enrichir_menu(la_ref_menu ff_menu.m_ref%TYPE, la_ref_simple ff_simple.s_ref%TYPE)  AS
  124.  
  125.   temp int;
  126.   BEGIN
  127.     IF la_ref_menu IS NULL OR la_ref_simple IS NULL THEN
  128.       RAISE PARAMETRE_INDEFINI;
  129.     END IF;
  130.    
  131.     SELECT COUNT(*) INTO temp FROM FF_SIMPLE
  132.     WHERE S_REF = la_ref_simple;
  133.     IF temp != 1 THEN
  134.       RAISE PRODUIT_INCONNU;
  135.     END IF;
  136.    
  137.     SELECT COUNT(*) INTO temp FROM FF_MENU
  138.     WHERE M_REF = la_ref_menu;
  139.     IF temp != 1 THEN
  140.       RAISE PRODUIT_INCONNU;
  141.     END IF;
  142.  
  143.     SELECT COUNT(*) INTO temp
  144.     FROM FF_SIMPLE
  145.     INNER JOIN FF_PRODUIT ON FF_PRODUIT.P_REF = FF_SIMPLE.S_REF
  146.     WHERE FF_SIMPLE.S_REF = la_ref_simple
  147.     AND FF_PRODUIT.TAILLE IN (SELECT FF_PRODUIT.TAILLE
  148.                               FROM FF_PRODUIT
  149.                               INNER JOIN FF_SIMPLE ON FF_SIMPLE.S_REF = FF_PRODUIT.P_REF
  150.                               INNER JOIN FF_CONSTITUE ON REF_SIMPLE = FF_SIMPLE.S_REF
  151.                               WHERE FF_CONSTITUE.REF_MENU = la_ref_menu);
  152.    
  153.     IF temp = 0 THEN
  154.       RAISE INCOHERENCE_TAILLES;
  155.     END IF;
  156.    
  157.     BEGIN
  158.       INSERT INTO FF_CONSTITUE(REF_MENU, REF_SIMPLE) VALUES(la_ref_menu, la_ref_simple);
  159.     END;
  160.   END enrichir_menu;
  161.  
  162.   PROCEDURE appauvrir_menu(la_ref_menu ff_menu.m_ref%TYPE, la_ref_simple ff_simple.s_ref%TYPE)  AS
  163.   temp int;
  164.   BEGIN
  165.     IF la_ref_menu IS NULL OR la_ref_simple IS NULL THEN
  166.       RAISE PARAMETRE_INDEFINI;
  167.     END IF;
  168.    
  169.     SELECT COUNT(*) INTO temp FROM FF_CONSTITUE
  170.     WHERE REF_MENU = la_ref_menu AND REF_SIMPLE = la_ref_simple;
  171.     IF temp = 0 THEN
  172.       RAISE PB_COMPOSITION;
  173.     END IF;
  174.    
  175.     BEGIN
  176.       DELETE FROM FF_CONSTITUE WHERE REF_MENU = la_ref_menu AND REF_SIMPLE = la_ref_simple;
  177.     END;
  178.   END appauvrir_menu;
  179.  
  180. END PAQ_PRODUITS;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement