36 0 54KB
Module : Administration et Sécurité des Bases de Données Correction Travaux Pratiques N°1 /* Q1 */ declare v_cpte number(3); begin select count(*) into v_cpte from pilote; dbms_output.put_line('le nombre de pilote existant dans la base est:'); dbms_output.put_line(v_cpte); end; / /* Q2 */ declare v_com real; v_embauche date; begin select comm, embauche into v_com, v_embauche from pilote where sal = (select max(sal) from pilote); dbms_output.put_line('Commission:'); dbms_output.put_line(v_com); dbms_output.put_line('Date Embauche :'); dbms_output.put_line(v_embauche); end; / /* Q3 */ declare v_nom pilote.nom%type; v_sal pilote.sal%type; begin select nom, sal into v_nom, v_sal from pilote
where nopilot='6723'; dbms_output.put_line('le nom du pilote est: '||v_nom); dbms_output.put_line('le salaire est: '||v_sal); end; / /* Q4 */ declare v_nom avion.nom%type; begin select nom into v_nom from avion a where 5< (select count(vol) from affectation, avion where avion.nom = a.nom and affectation.avion =avion.nuavion group by avion); dbms_output.put_line(v_nom); end; / /* Q5 */ /* 1ière méthode */ declare v_nom pilote.nom%type; v_sal pilote.sal%type; begin select nom, sal into v_nom, v_sal from pilote where embauche = (select min(embauche) from pilote); dbms_output.put_line('le nom du pilote est : '||v_nom); dbms_output.put_line('le salaire est : '||v_sal); end; / /* 2ière méthode */ declare type i_pilote is record( v_nom pilote.nom%type, v_sal pilote.sal%type); inf_pilote i_pilote; begin select nom, sal into inf_pilote from pilote where embauche = (select min(embauche)
from pilote); dbms_output.put_line('le nom du pilote est : '||inf_pilote.v_nom); dbms_output.put_line('le salaire est : '||inf_pilote.v_sal); end; / /* Q6 */ /* 1ière méthode */ declare v_codtyp appareil.codetype%type; c number(3) := 0; begin select codetype, count(nuavion) into v_codtyp, c from appareil, avion where appareil.codetype=avion.type and codetype ='AB3' group by codetype; dbms_output.put_line('le code type: '||v_codtyp); dbms_output.put_line('le nombre d’avion: '||c); end; / /* Q6 */ /* 2ière méthode */ declare type i_appareil is record( v_codtyp appareil.codetype%type, c number(3)); e_appareil i_appareil; begin select codetype, count(nuavion) into e_appareil from appareil, avion where appareil.codetype=avion.type and codetype ='AB3' group by codetype; dbms_output.put_line('le code type: '||e_appareil.v_codtyp); dbms_output.put_line('le nombre d’avion: '||e_appareil.c); end; / /* Q7 */ declare v_codetype CONSTANT appareil.codetype%type:='735'; v_nbplace CONSTANT appareil.nbplace%type:=450; v_design CONSTANT appareil.design%type:='737-400'; begin
insert into appareil values(v_codetype,v_nbplace,v_design); commit work; end; / /* Q7 */ /*2ième méthode */ declare begin insert into appareil values('735',450,'737-400'); commit work; end; / /* Q8 */ declare moy real default 13000; begin select avg(nbhvol) into moy from avion; dbms_output.put_line('moyenne= '||moy); end; / /* Q9 */ declare v_sal pilote.sal%type; v_comm pilote.comm%type; begin select sal, comm into v_sal, v_comm from pilote where nopilot = '1333'; if v_sal < v_comm then update pilote set sal = v_sal*1.2 where nopilot ='1333'; dbms_output.put_line('le salaire majoré de 10%'); else dbms_output.put_line('le salaire est inf à la comm'); end if; commit work; end; /