Advertisement
Benlahbib_Abdessamad

Untitled

May 25th, 2015
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 1.71 KB | None | 0 0
  1. devoir
  2.  
  3. exercice 1
  4.  
  5. CREATE OR REPLACE PROCEDURE raisesalary
  6. IS
  7. grade NUMBER;
  8. salaire NUMBER;
  9. nom varchar2(30);
  10. cursor raisecur IS (SELECT e.ename,s.grade,e.sal FROM emp e,salgrade s WHERE e.sal BETWEEN s.losal AND s.hisal);
  11. ligne raisecur % Rowtype;
  12. BEGIN
  13. OPEN raisecur;
  14. loop
  15. Fetch raisecur INTO ligne;
  16. exit WHEN raisecur%NotFound;
  17. grade:=ligne.grade;
  18. salaire:=ligne.sal;
  19. nom:=ligne.ename;
  20. IF grade=1 OR grade=2 THEN
  21. salaire:=salaire+salaire*10/100;
  22. elsif grade=3 THEN
  23. salaire:=salaire+salaire*15/100;
  24. elsif grade=4 OR grade=5 THEN
  25. salaire:=salaire+salaire*20/100;
  26. END IF;
  27. DBMS_OUTPUT.put_line('l employe <<' || nom || '>> a le nouveau salaire <<' || salaire || '>> , son ancient salaire est <<' || ligne.sal || '>> , son grade est <<' || grade || '>>');
  28. END loop;
  29. close raisecur;
  30. END raisesalary;
  31.  
  32. /
  33.  
  34. exercice 2
  35.  
  36. CREATE OR REPLACE FUNCTION getmgrname(numero IN emp.empno%TYPE) RETURN varchar2
  37. IS
  38.  
  39. mgrmgr NUMBER;
  40. mgrnom varchar2(30);
  41. BEGIN
  42. SELECT mgr INTO mgrmgr FROM emp WHERE empno=numero;
  43. IF mgrmgr IS NULL THEN
  44. mgrnom:='AUCUN';
  45. ELSE
  46. mgrnom:=getempname(mgrmgr);
  47. END IF;
  48. DBMS_OUTPUT.put_line('l employe <<' || getempname(numero) || '>> a le manager <<' || mgrnom || '>>');
  49. RETURN (mgrnom);
  50. END getmgrname;
  51. /
  52.  
  53. exercice 3
  54.  
  55. CREATE OR REPLACE FUNCTION getsalarymax(code IN emp.empno%TYPE) RETURN NUMBER
  56. IS
  57. salaire NUMBER;
  58. BEGIN
  59. SELECT MAX(e.sal) INTO salaire FROM emp e,salgrade s WHERE e.sal BETWEEN s.losal
  60.  AND s.hisal AND s.grade IN (SELECT s.grade FROM emp e,salgrade s WHERE e.sal BETWEEN s.losal
  61.  AND s.hisal AND e.empno=code) GROUP BY grade;
  62. DBMS_OUTPUT.PUT_LINE('le salaire maximal d un employe du meme grade que '|| code || ' est : ' ||salaire);
  63. RETURN salaire;
  64.  END getsalarymax;
  65. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement