Advertisement
Guest User

Untitled

a guest
Apr 11th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. SET SERVEROUTPUT ON
  2.  
  3. --1
  4. CREATE OR REPLACE PROCEDURE job_nou (id_job IN functii.id_functie%TYPE,
  5. titlu_job IN functii.denumire_functie%TYPE,
  6. sal_min IN functii.salariu_min%TYPE) IS
  7. sal_max functii.salariu_max%TYPE := 2 * sal_min;
  8. BEGIN
  9. INSERT INTO functii VALUES(id_job,titlu_job,sal_min,sal_max);
  10. DBMS_OUTPUT.PUT_LINE('S-a introdus jobul cu id-ul '||id_job);
  11. END;
  12.  
  13. BEGIN
  14. job_nou('SY_ANAL','System Analyst',6000);
  15. END;
  16.  
  17. SELECT * FROM functii WHERE id_functie = 'SY_ANAL';
  18. /
  19. --2
  20. CREATE OR REPLACE PROCEDURE istoric_job (id_ang IN istoric_functii.id_angajat%TYPE,
  21. id_job IN istoric_functii.id_functie%TYPE) IS
  22. id angajati.id_angajat%TYPE;
  23. data_start angajati.data_angajare%TYPE;
  24. BEGIN
  25. INSERT INTO istoric_functii
  26. SELECT id_angajat,data_angajare,SYSDATE,id_functie,id_departament
  27. FROM angajati WHERE id_angajat = id_ang;
  28. UPDATE angajati SET
  29. data_angajare = SYSDATE, id_functie = id_job, salariul=(SELECT salariu_min FROM functii WHERE id_functie = id_job)
  30. WHERE id_angajat = id_ang;
  31. END;
  32. /
  33. BEGIN
  34. istoric_job(106,'SY_ANAL');
  35. END;
  36. /
  37. SELECT * FROM angajati WHERE id_angajat = 106;
  38. SELECT * FROM istoric_functii WHERE id_angajat = 106;
  39.  
  40. ROLLBACK;
  41.  
  42. --3
  43. CREATE OR REPLACE PROCEDURE modif_sal (id_job IN functii.id_functie%TYPE,
  44. sal_min IN functii.salariu_min%TYPE,
  45. sal_max IN functii.salariu_max%TYPE) IS
  46. e EXCEPTION;
  47. sal EXCEPTION;
  48. BEGIN
  49. IF sal_max < sal_min
  50. THEN RAISE sal;
  51. END IF;
  52. UPDATE functii SET salariu_min = sal_min, salariu_max = sal_max
  53. WHERE id_functie = id_job;
  54. IF SQL%ROWCOUNT = 0 THEN
  55. RAISE e;
  56. END IF;
  57.  
  58. EXCEPTION
  59. WHEN sal THEN DBMS_OUTPUT.PUT_LINE('Salariul maxim dat este mai mic decat cel minim dat');
  60. WHEN e THEN DBMS_OUTPUT.PUT_LINE('Nu exista functia cu id-ul dat');
  61. END;
  62.  
  63. BEGIN
  64. modif_sal('SY_ANAL',7000,140);
  65. END;
  66.  
  67. BEGIN
  68. modif_sal('SY_ANAL',7000,14000);
  69. END;
  70.  
  71. SELECT * FROM functii WHERE id_functie = 'SY_ANAL';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement