From 473c60c2ea6da27b704f3219b3ea01d86d3418b3 Mon Sep 17 00:00:00 2001 From: pascal Date: Tue, 9 Mar 2021 00:19:35 +0100 Subject: [PATCH] ok --- EXOS/Exam2020-all.tex | 2 +- EXOS/exo1-FGL.sql | 114 +++++++++++++++++++++--------------------- 2 files changed, 57 insertions(+), 59 deletions(-) diff --git a/EXOS/Exam2020-all.tex b/EXOS/Exam2020-all.tex index c3a4df6..31dbcc8 100644 --- a/EXOS/Exam2020-all.tex +++ b/EXOS/Exam2020-all.tex @@ -523,7 +523,7 @@ Messages à prévoir : \item L’équipement a été enregistré : Libellé \end{itemize} -% \lstinputlisting{exo1-FGL.sql} + \lstinputlisting{exo1-FGL.sql} \end{exercice} \begin{exercice}[PL1] (10 points) diff --git a/EXOS/exo1-FGL.sql b/EXOS/exo1-FGL.sql index c6287d5..418f715 100644 --- a/EXOS/exo1-FGL.sql +++ b/EXOS/exo1-FGL.sql @@ -1,58 +1,56 @@ -drop table tresultat purge; -create table tresultat(ligne varchar2(200)); - -variable vidEquipement char(3) -prompt id de l equipement -accept vidEquipement - -variable vtarif number -prompt le tarif de l equipement ? -accept vtarif - -variable vlibelle VARCHAR2(20) -prompt libellé équipement ? -accept vlibelle - -DECLARE - dmessage varchar2(200); - probleme exception; - dcpt number; - -BEGIN - - dmessage := 'ERREUR: id équipement déjà attribué'; - SELECT COUNT(*) INTO dcpt - FROM EQUIPEMENT - WHERE idEquipement = '&vidEquipement'; - IF dcpt=1 THEN - INSERT INTO tresultat VALUES (dmessage); - ELSE - dmessage := 'ERREUR: Le tarif doit être supérieure à 0'; - IF '&vtarif' <= 0 then - raise probleme; - ELSE - dmessage := 'ERREUR: le libellé de l''équipement doit être unique'; - SELECT count(*) INTO dcpt - FROM EQUIPEMENT - WHERE libelle = '&vlibelle'; - - IF dcpt>0 then - raise probleme; - ELSE - INSERT INTO EQUIPEMENT VALUES ('&vidEquipement', '&vtarif', '&vlibelle'); - COMMIT; - INSERT INTO tresultat VALUES ('L'équipement a été enregistré :' || '&vlibelle'); - END IF; - END IF; - -EXCEPTION - WHEN probleme then - INSERT INTO tresultat VALUES (dmessage); -END; -. -/ - -SELECT * FROM tresultat; - - - +drop table tresultat purge; +create table tresultat(ligne varchar2(200)); + +variable vidEquipement char(3) +prompt id de l equipement +accept vidEquipement + +variable vtarif number +prompt le tarif de l equipement ? +accept vtarif + +variable vlibelle VARCHAR2(20) +prompt libellé équipement ? +accept vlibelle + +DECLARE + dmessage varchar2(200); + probleme exception; + dcpt number; + +BEGIN + + dmessage := 'ERREUR: id equipement deja attribue'; + SELECT COUNT(*) INTO dcpt + FROM EQUIPEMENT + WHERE idEquipement = '&vidEquipement'; + IF dcpt=1 THEN + INSERT INTO tresultat VALUES (dmessage); + ELSE + dmessage := 'ERREUR: Le tarif doit etre superieure a 0'; + IF '&vtarif' <= 0 then + raise probleme; + ELSE + dmessage := 'ERREUR: le libelle de l equipement doit etre unique'; + SELECT count(*) INTO dcpt + FROM EQUIPEMENT + WHERE libelle = '&vlibelle'; + + IF dcpt>0 then + raise probleme; + ELSE + INSERT INTO EQUIPEMENT VALUES ('&vidEquipement', '&vtarif', '&vlibelle'); + COMMIT; + INSERT INTO tresultat VALUES ('L equipement a ete enregistre :' || '&vlibelle'); + END IF; + END IF; + +EXCEPTION + WHEN probleme then + INSERT INTO tresultat VALUES (dmessage); +END; +. +/ + +SELECT * FROM tresultat; +