0% ont trouvé ce document utile (0 vote)
3 vues6 pages

Dev

Le document contient plusieurs blocs de code PL/SQL pour gérer des livres et des ventes dans une base de données. Il inclut des curseurs pour afficher les ventes, des procédures pour ajouter des livres et des ventes, une fonction pour calculer le total des ventes d'un livre, et un trigger pour vérifier les prix négatifs lors de l'insertion de livres. Chaque section est accompagnée de messages de sortie pour indiquer les actions effectuées.

Transféré par

laribiyassine245
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
3 vues6 pages

Dev

Le document contient plusieurs blocs de code PL/SQL pour gérer des livres et des ventes dans une base de données. Il inclut des curseurs pour afficher les ventes, des procédures pour ajouter des livres et des ventes, une fonction pour calculer le total des ventes d'un livre, et un trigger pour vérifier les prix négatifs lors de l'insertion de livres. Chaque section est accompagnée de messages de sortie pour indiquer les actions effectuées.

Transféré par

laribiyassine245
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

1) DECLARE

CURSOR c_emp IS

SELECT [Link], [Link], [Link]

FROM livre l, vente v

WHERE v.id_livre = l.id_livre;

v_titre [Link]%TYPE;

v_quantite [Link]%TYPE;

v_prix [Link]%TYPE;

BEGIN

OPEN c_emp;

LOOP

FETCH c_emp INTO v_titre, v_quantite, v_prix;

EXIT WHEN c_emp%NOTFOUND;

DBMS_OUTPUT.PUT_LINE('titre: ' || v_titre ||' | quantite: ' || v_quantite || ' | affaire genere: ' ||
(v_quantite * v_prix));

END LOOP;

CLOSE c_emp;

END;
2)

DECLARE

v_titre [Link]%TYPE;

v_count NUMBER;

BEGIN

SELECT COUNT(*) INTO v_count

FROM livre

WHERE id_livre = 103;

IF v_count = 0 THEN

INSERT INTO livre VALUES (103, 'le petit prince', 20, 1);

DBMS_OUTPUT.PUT_LINE('Livre added.');

ELSE

DBMS_OUTPUT.PUT_LINE('Livre not added it already existe .');

END IF;

END;

DECLARE

v_titre [Link]%TYPE;

v_count NUMBER;

BEGIN

SELECT COUNT(*) INTO v_count

FROM livre
WHERE id_livre = 106;

IF v_count = 0 THEN

INSERT INTO livre VALUES (106, 'le petit prince', 20, 1);

DBMS_OUTPUT.PUT_LINE('Livre added.');

ELSE

DBMS_OUTPUT.PUT_LINE('Livre not added it already existe .');

END IF;

END;

3) CREATE OR REPLACE PROCEDURE ajouter_vente (

p_id_livre IN INT,

p_qantite IN INT,

p_date_vente IN VARCHAR2

) IS

v_count INT;

v_id_vente INT;

BEGIN

SELECT COUNT(*) INTO v_count FROM livre WHERE id_livre = p_id_livre;

IF v_count = 0 THEN

DBMS_OUTPUT.PUT_LINE('Livre n''existe pas.');

ELSE
SELECT NVL(MAX(id_vente), 0) + 1 INTO v_id_vente FROM vente;

INSERT INTO vente (id_vente, id_livre, quantite, date_vente)

VALUES (v_id_vente, p_id_livre, p_qantite, TO_DATE(p_date_vente, 'YYYY-MM-DD'));

DBMS_OUTPUT.PUT_LINE('Vente ajoutée avec succès.');

END IF;

END;

DECLARE

BEGIN

ajouter_vente(103,2,'2004/5/5');

END;

DECLARE

BEGIN

ajouter_vente(108,2,'2004/5/5');

END;
4) CREATE OR REPLACE FUNCTION total_ventes_livre (

p_id_livre IN INT

) RETURN NUMBER IS

v_total NUMBER;

v_count NUMBER;

BEGIN

SELECT COUNT(*) INTO v_count FROM vente WHERE id_livre = p_id_livre;

IF v_count = 0 THEN

RETURN 0;

END IF;

SELECT SUM([Link] * [Link]) INTO v_total

FROM vente v

JOIN livre l ON v.id_livre = l.id_livre

WHERE v.id_livre = p_id_livre;

RETURN v_total;

END;

DECLARE

BEGIN

DBMS_OUTPUT.PUT_LINE(total_ventes_livre (103));

END;
5)

CREATE OR REPLACE TRIGGER test_nega

AFTER INSERT ON livre

FOR EACH ROW

BEGIN

IF :[Link] < 0 THEN

DBMS_OUTPUT.PUT_LINE('le prix négatif.');

END IF;

END.

INSERT INTO livre VALUES (1012, 'test', -20, 1);

Vous aimerez peut-être aussi