From 028f121c65f3b65fede9d94f86a8a798795d611c Mon Sep 17 00:00:00 2001 From: pascal Date: Mon, 1 Feb 2021 14:19:14 +0100 Subject: [PATCH] exo5 --- COURS/C-exo5.sql | 61 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 COURS/C-exo5.sql diff --git a/COURS/C-exo5.sql b/COURS/C-exo5.sql new file mode 100644 index 0000000..959f79a --- /dev/null +++ b/COURS/C-exo5.sql @@ -0,0 +1,61 @@ +set echo off +set verify off +set feed off + +CREATE TABLE tLigne( + designation VARCHAR2(500) +); + +variable vRefProduit CHAR(5) +variable vRefFournisseur CHAR(5); +variable vPrixFournisseur NUMBER; + +prompt Tappez la référence du nouveau produit: +accept vRefProduit +prompt Tappez la référence du fournisseur du nouveau produit: +accept vRefFournisseur +prompt Tappez le prix du produit: +accept vPrixFournisseur + +DECLARE +dCount NUMBER; +NO_PRODUIT EXCEPTION; +NO_FOURNISSEUR EXCEPTION; +PRODUIT_FOURNISSEUR_ALREADY_EXIST EXCEPTION; + + +BEGIN + +SELECT COUNT(*) INTO dCount FROM tProduit WHERE noProduit = '&vRefProduit'; +IF dCount = 0 THEN + RAISE NO_PRODUIT; + + +SELECT COUNT(*) INTO dCount FROM tFournisseur WHERE ref = '&vRefFournisseur'; +IF dCount = 0 THEN + RAISE NO_FOURNISSEUR; + +SELECT COUNT(*) INTO dCount FROM tProduitFourn WHERE noProduit = '&vRefProduit' AND ref = '&vRefFournisseur'; +IF dCount != 0 THEN + RAISE PRODUIT_FOURNISSEUR_ALREADY_EXIST; + +INSERT INTO tProduitFourn VALUES('&vRefProduit', '&vRefFournisseur', '&vPrixFournisseur', NULL, NULL); +INSERT INTO tLigne VALUES('La liaison entre le produit et le fournisseur a ete ajoute'); + +EXCEPTION +when NO_PRODUIT then + INSERT INTO tLigne VALUES('La liaison ne peut exister car le produit renseigne n existe pas'); +when NO_FOURNISSEUR then + INSERT INTO tLigne VALUES('La liaison ne peut exister car le fournisseur renseigne n existe pas'); +when PRODUIT_FOURNISSEUR_ALREADY_EXIST then + INSERT INTO tLigne VALUES('La liaison existe deja, et n a donc pas ete ajoute une seconde fois.') + +END; +. +/ + +set verify on +set echo on +set feed on + +SELECT * FROM tLigne;