Vous êtes sur la page 1sur 7

TP 15

Le Langage de bloc PL/SQL : Gestion des curseurs

Omar Aden Abdi Youssouf

2012/2013

1- Calcul des temps dinstallation et recherche des problmes 1) Cration de la table vnementielle : CREATE TABLE installation ( NOMLOGICIEL VARCHAR(20), NOMPOSTE VARCHAR(20), ATTENTE NUMBER(3), PROBLEME VARCHAR(20) ); 2) Ecriture du Bloc Pl/SQL
DECLARE v_nomlogiciel LOGICIEL.NOMLOGICIEL%TYPE; v_nomposte POSTE.NOMPOSTE%TYPE; v_DateA DATE; V_ATTENTE NUMBER (10); V_PROBLEME VARCHAR(100); v_Dateins installer.dateins%type; v_idposte INSTALLER.IDPOSTE%TYPE; v_idlogiciel INSTALLER.IDLOGICIEL%TYPE; CURSOR C1 IS SELECT * FROM INSTALLER ; BEGIN OPEN C1; FETCH C1 INTO v_idposte, v_idlogiciel, v_dateins; WHILE C1% FOUND LOOP SELECT NOMPOSTE INTO v_nomposte FROM POSTE where v_idposte= idposte; SELECT NOMLOGICIEL,DATEACHAT INTO v_nomlogiciel,v_DateA FROM LOGICIEL where v_idlogiciel= idlogiciel; IF (v_DateIns IS NOT NULL AND v_DateA IS NOT NULL) THEN V_ATTENTE := v_DateIns - v_DateA ; END IF; IF (V_ATTENTE < 0 ) THEN V_PROBLEME :=('DATE INSTALLATION ANTERIEUR'); END IF; IF(v_DateIns IS NULL) THEN V_PROBLEME :=('pAS INTALLATION'); END IF ; IF( v_DateA IS NULL) THEN V_PROBLEME :=('DATE ACHAT iNCONNUE'); END IF; INSERT INTO installations VALUES(v_nomlogiciel,v_nomposte,V_ATTENTE,V_PROBLEME); FETCH C1 INTO v_idposte, v_idlogiciel, v_dateins; END LOOP; CLOSE C1; COMMIT; END; / show errors L;

Table mis jour :

2- Transaction : Installation dun logiciel sur tous les postes dun segment Cration du Tableau CREATE or Replace TABLE compterendu ( Message VARCHAR2(80), ); Block PL/SQL Accept v_segment prompt 'Donner le segment :' Accept v_idlogiciel prompt 'Donner l''ID du nouveau logiciel :' Accept v_nomlogiciel prompt 'Donner le nom du nouveau logiciel :' Accept v_dateachat prompt 'Donner la date d''achat du nouveau logiciel :' Accept v_version prompt 'Donner la version du nouveau logiciel :' Accept v_typelogiciel prompt 'Donner le type du nouveaulogiciel :' DECLARE v_idsegment poste.idsegment%type; v_idposte installer.idposte%type; v_nomposte poste.nomposte%type; v_nomsalle salle.nomsalle%type; v_idsalle poste.idsalle%type; cursor C1 is select idposte,nomposte,idsalle from poste where typeposte = '&v_typelogiciel' and idsegment = '&v_segment'; BEGIN insert into logiciel (idlogiciel,nomlogici values ('&v_idlogiciel','&v_nomlogiciel','&v_dateachat','&v_version','&v_typelogiciel'); insert into compterendu (Message) values ('Enregistrement du logiciel<&v_nomlogiciel>dans logiciel'); nomlogiciel,dateachat,version,typelogiciel)

OPEN C1; FETCH C1 INTO v_idposte,v_nomposte,v_idsalle; WHILE C1% FOUND LOOP (idposte,idlogiciel,dateins) values (v_idposte,'&v_idlogiciel',sysdate); from salle where idsalle = v_idsalle; values ('installation du poste '||v_nomposte||' dans la salle '||v_nomsalle); FETCH C1 INTO v_idposte,v_nomposte,v_idsalle; END LOOP; CLOSE C1; COMMIT; END; / SHOW ERRORS; L; Trace

La Table compte-rendu

La Table Logiciel

La Table Installer Je signale que linstallation a t effectuer sur les postes P4 et P5 seulement car ils sont les seules remplir les conditions.