Beruflich Dokumente
Kultur Dokumente
DESC nom_de_table;
/////
DECLARE
v_num_four fournisseur.numfour%type := 1; -- Remplacer 1 par le numéro du
fournisseur de Tunis
v_prix_ttc produit.pu%type;
CURSOR c_produits IS
SELECT numprod, pu*1.206 AS prix_ttc
FROM produit
WHERE numfour = v_num_four;
BEGIN
FOR prod IN c_produits LOOP
v_prix_ttc := prod.prix_ttc;
DBMS_OUTPUT.PUT_LINE('Produit ' || prod.numprod || ' : ' || v_prix_ttc || '
DT');
END LOOP;
END;
DECLARE
v_ref_facture facture.ref_facture%type;
v_montant_total facture.montant_fact%type;
v_frais_transport CONSTANT NUMBER(2) := 7;
BEGIN
FOR c IN (SELECT numcli, nom, prenom FROM client) LOOP
v_ref_facture := 'FACT' || c.numcli;
SELECT SUM(qte*pu) INTO v_montant_total FROM lgcmd WHERE refcmd IN (SELECT
refcmd FROM commande WHERE numcli = c.numcli);
IF v_montant_total < 300 THEN
v_montant_total := v_montant_total + v_frais_transport;
END IF;
INSERT INTO facture (ref_facture, date_facture, montant_fact, numcli,
montant_a_payer)
VALUES (v_ref_facture, SYSDATE, v_montant_total, c.numcli, v_montant_total);
DBMS_OUTPUT.PUT_LINE('Facture créée pour ' || c.nom || ' ' || c.prenom || ' : '
|| v_ref_facture || ', montant total : ' || v_montant_total || ' DT');
END LOOP;
END;
UPDATE Facture
SET Remise = CASE WHEN Montant_fact > 1000 THEN Montant_fact * 0.08 ELSE 0 END,
Montant_a_payer = Montant_fact - (CASE WHEN Montant_fact > 1000 THEN
Montant_fact * 0.08 ELSE 0 END);
DECLARE
v_ref_facture VARCHAR2(20);
v_montant_facture NUMBER(10, 2);
BEGIN
FOR c IN (SELECT NumCli, CONCAT('FACT', NumCli) AS ref_facture
FROM CLIENT)
LOOP
SELECT SUM(pu * qte)
INTO v_montant_facture
FROM PRODUIT p, LGCMD l, COMMANDE c
WHERE p.NumProd = l.NumProd
AND l.RefCmd = c.RefCmd
AND c.NumCli = c.NumCli;
v_ref_facture := c.ref_facture;
DECLARE
v_ref_facture VARCHAR2(20);
v_montant_facture NUMBER(10, 2);
BEGIN
FOR c IN (SELECT NumCli, CONCAT('FACT', NumCli) AS ref_facture
FROM CLIENT)
LOOP
SELECT SUM(PU * QTE)
INTO v_montant_facture
FROM PRODUIT p, LGCMD l, COMMANDE c
WHERE p.NumProd = l.NumProd
AND l.RefCmd = c.RefCmd
AND c.NumCli = c.NumCli;
v_ref_facture := c.ref_facture;
DECLARE
v_ref_facture FACTURE.Ref_facture%TYPE;
v_montant_facture FACTURE.Montant_fact%TYPE;
v_remise NUMBER(8,2);
BEGIN
FOR facture IN (SELECT * FROM FACTURE WHERE Montant_fact > 1000) LOOP
v_ref_facture := facture.Ref_facture;
v_montant_facture := facture.Montant_fact;
v_remise := v_montant_facture * 0.08;