1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
   |  create or replace procedure augmentation_salariale (nombre_années_experience in number)  is 
Begin
      declare 
      cursor cursor_1 is 
    select   emp_id,travaille.sal_id,dep_id , classe_salariale.niveau_sal,debut  from   travaille, classe_salariale 
      where  travaille.sal_id = classe_salariale.sal_id 
      and    classe_salariale.niveau_sal < 5
      and    to_char(sysdate,'yyyy')-to_char(travaille.debut,'yyyy') > nombre_années_experience; 
 
      niveau_salaire     classe_salariale.niveau_sal%type; 
      identifiant_salaire  classe_salariale.sal_id%type;
      identifiant_employe  travaille.emp_id%type ;
      identifiant_dep    travaille.dep_id%type;
      begin 
      open cursor_1;
      loop 
              fetch cursor_1 into identifiant_employe ,identifiant_dep, identifiant_salaire, niveau_salaire, date_debut ;
              exit when cursor_1%notfound ;
              update travaille  set emp_id= identifiant_employe,
              sal_id =(select sal_id from classe_salariale where classe_salariale.niveau_sal= niveau_salaire  + 1),
 
              dep_id = identifiant_dep,
              where travaille.debut= date_debut; 
 
      end loop; 
      close cursor_1;
 
end;
end;
 
execute augmentation_salariale(10); | 
Partager