Pour ce problème, j'ai besoin d'augmenter les employés.salaire de 20% en commençant par les salaires les plus bas (ordre asc) jusqu'à 100 000 $ est épuisé. J'ai de la difficulté à trouver une solution pour économiser le montant mis à jour jusqu'à 100 000 $. C'est ce que j'ai jusqu'ici. MerciOracle SQL Cursor pour augmenter les salaires jusqu'à ce que le montant maximum soit atteint
declare
cursor mancur is
select salary from employees order by salary asc;
tempcur mancur%ROWTYPE;
profits number := 100000;
tempsalary employees.salary%type;
tempinc number(8,2);
begin
open mancur;
loop
fetch mancur into tempcur;
tempinc := tempcur.salary * 1.20;
tempsalary := profits - tempcur.salary;
dbms_output.put_line(tempcur.salary || ' increased by 20% ' || tempinc || ', Bonus amount left ' || tempsalary);
exit when mancur%notfound; --when 100,000 has been used
--update employees set salary = salary * 1.20 where employee_id = tempcur.employee_id;
end loop;
close mancur;
end;
/
Est-ce un problème de production ou un problème de devoirs? Si c'est un devoir, est-ce pour un cours PL/SQL? Cette exigence peut être résolue beaucoup plus efficacement avec une seule instruction SQL. – mathguy
Aussi, comment gérez-vous les cravates? Supposons que vous ayez gravi la liste, et maintenant les prochains employés (dont le salaire n'a pas encore été augmenté) sont TROIS employés avec le même salaire. Leur salaire actuel est de 30 000 $ chacun, alors ils devraient recevoir 6 000 $ chacun, mais il ne reste plus que 12 000 $. Qui obtient combien? – mathguy