You are on page 1of 2

** Exercice 1:

DECLARE
-- Déclaration des variables
v_prix_dinars PRODUIT.prixuni%TYPE;
v_prix_euros NUMBER(10, 0);
v_num_prod PRODUIT.numprod%TYPE;
v_desig PRODUIT.desi%TYPE;
v_num_fouriss PRODUIT.numfour%TYPE;
x_count NUMBER := 0;

CURSOR c_produits IS
SELECT numprod, desi, prixuni, numfour
FROM PRODUIT;

BEGIN

SELECT COUNT(*) INTO x_count FROM PRODUIT;

IF x_count = 0 THEN

INSERT INTO PRODUIT2 VALUES (0, 'Pas de produit', NULL);


ELSE

FOR i IN c_produits LOOP

v_num_prod := i.numprod;
v_desig := UPPER(i.desi); -- Convertir en majuscules
v_prix_dinars := NVL(i.prixuni, 0); -- Traiter les cas où le prix est
NULL
v_prix_euros := ROUND(v_prix_dinars / 2.129);

INSERT INTO PRODUIT2 (numprod, desi, prixuni, numfour)


VALUES ( v_num_prod, v_desig, v_prix_euros, i.numfour);
END LOOP;
END IF;
END;

** Exercice 2:

DECLARE
v_n_uplets NUMBER;
v_jongleurs NUMBER;
v_proportion NUMBER;
BEGIN

SELECT COUNT(*) INTO v_n_uplets FROM PERSONNEL;

SELECT COUNT(*) INTO v_jongleurs FROM PERSONNEL WHERE Role = 'Jongleur';

v_proportion := (v_jongleurs / v_n_uplets) * 100;

DBMS_OUTPUT.PUT_LINE('La proportion des jongleurs est : ' || v_proportion ||


'%');
END IF;
EXCEPTION
IF v_total = 0 THEN
RAISE_APPLICATION_ERROR('Erreur Fatale :La table PERSONNEL est vide.');
WHEN NO_DATA_FOUND THEN
RAISE_APPLICATION_ERROR('Aucune donnée trouvée dans la table PERSONNEL.');
END;

** Exercice 4:

DECLARE

CURSOR c_vols IS
SELECT VolNum, AvNum, HeureDep, HeureArr
FROM VOL
WHERE AvNum IN (1, 2, 4, 8);

v_num_vol VOL.VolNum%TYPE;
v_num_avion VOL.AvNum#%TYPE;
v_heure_depart VOL.HeureDep%TYPE;
v_heure_arret VOL.HeureArr%TYPE;

v_duree_vol NUMBER;

BEGIN
OPEN c_vols;

LOOP

FETCH c_vols INTO v_num_vol, v_num_avion, v_heure_depart,v_heure_arret;


EXIT WHEN c_vols%NOTFOUND;

v_duree_vol := v_heure_arret - v_heure_depart;

IF v_num_avion IN (1, 4) THEN


v_duree_vol := v_duree_vol * 0.9;
ELSIF v_num_avion IN (2, 8) THEN
v_duree_vol := v_duree_vol * 0.85;
END IF;

UPDATE VOL
SET HeureArr = v_heure_depart + v_duree_vol
WHERE VolNum = v_num_vol;

DBMS_OUTPUT.PUT_LINE('Vol ' || v_num_vol || ' : Nouvelle heure d''arrivée


= ' || (v_heure_depart + v_duree_vol));
END LOOP;

CLOSE c_vols;
END;

** Exercice 5:

You might also like