bonjour tout le monde;
je vous serait très reconnaissant si vous voulez bien me dire ou est e problème.
En faite il s'agit d'une procédure en pl sql qui fait une augmentation salariale
je vous joint le modèle physique en pièce jointe.Nom : MPD.GIF
Affichages : 275
Taille : 46,9 Ko

L'énoncé est comme suit :
Automatisez à l’aide d’unité(s) de programmation PL/SQL l’augmentation salariale des employés ayant plus de 10 ans d’expérience pour un travail donné dans l’entreprise.
Une augmentation de salaire signifie passer d’un salaire de niveau n à un salaire de niveau n+1 (classe_salariale.niveau_sal). Les employés en niveau 5 (maximum de classe_salariale.niveau_sal) n’ont pas le droit à une augmentation de salaire.
Notez qu’il n’y a que 5 enregistrements dans la table CLASSE_SALARIALE (correspondant aux 5 niveaux de salaire).

le problème dans ma requête que j arrive pas a trouver comment updater la table travaille

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);