From 00596d3135fe2774f793ba782e53275bedd0b248 Mon Sep 17 00:00:00 2001 From: pascal Date: Mon, 1 Feb 2021 14:18:19 +0100 Subject: [PATCH] exo --- COURS/PLSQL.tex | 81 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 78 insertions(+), 3 deletions(-) diff --git a/COURS/PLSQL.tex b/COURS/PLSQL.tex index 3014310..ea06ce7 100644 --- a/COURS/PLSQL.tex +++ b/COURS/PLSQL.tex @@ -979,6 +979,8 @@ set verify on set feed on } + + \begin{exercice} Enregistrer un nouveau produit d’un fournisseur : \begin{itemize} \item saisie des références du produit et du fournisseur, du prix @@ -990,9 +992,82 @@ set feed on \end{itemize} \end{exercice} -%% \cache{ -%% TODO -%% } + + \cache{ +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; + +. + +/ + +SELECT * FROM tLigne; + +} \subsection{Erreur Oracle}