Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.40 KB | None | 0 0
  1. --group by
  2. select a.dname, max(b.sal)
  3. from dept a, emp b
  4. where
  5. a.deptno = b.deptno
  6. group by a.dname;
  7.  
  8. --exceptii
  9. set serveroutput on;
  10. DECLARE
  11. i number:= 0;
  12. v_plictiseala exception;
  13. begin
  14. loop
  15. i:=i+1;
  16. dbms_output.put_line('Nr = ' || i);
  17. if i = 900 then
  18. raise v_plictiseala;
  19. end if;
  20. exit when i = 950;
  21. end loop;
  22. exception
  23. when v_plictiseala then
  24. dbms_output.put_line('Gata');
  25. end;
  26. /
  27.  
  28. --1 SA se creeze un bloc plsql in care
  29. --sa se citeasca de la tastatura un angajat (numele)
  30. -- si sa se afiseze suma veeniturilor tuturor angajatilor
  31. -- din departamentul managerului sau.
  32. --tratati too many rows, no data found, atentie la king care nu are mgr,
  33.  
  34. --2 Sa se citeasca de la tast un plafon salarial
  35. --aflati limtele salariale
  36. --cu case:
  37. --mai putin de doi afiasti 'prea putini'
  38. --intre 2 si =4 afisati 'destui'
  39. --5 prea multi
  40. --mai mult de 5 afiasti o exceptie definita de noi cu medaj
  41.  
  42. --3 sa se afla cati angajati sunt intr-un dep citit de la tastatura care
  43. --castiga mai mult decat seful lor
  44. --cu exceptii 3
  45.  
  46.  
  47. --1
  48. DECLARE
  49. nume_ang emp.ename%TYPE :='&angajat';
  50. suma_venituri emp.sal%type;
  51. manager emp.mgr%type;
  52. dept_mgr emp.deptno%type;
  53. v_exc exception;
  54. pragma exception_init(v_exc,-01400);
  55. BEGIN
  56. select mgr into manager
  57. from emp
  58. where ename = nume_ang;
  59. DBMS_OUTPUT.PUT_LINE('manager '|| manager);
  60.  
  61.  
  62. SELECT DEPTNO INTO dept_mgr
  63. FROM EMP
  64. WHERE empno = manager;
  65. DBMS_OUTPUT.PUT_LINE('ID_DEPT mgr '|| dept_mgr);
  66.  
  67.  
  68. SELECT sum(sal+nvl(comm,0)) INTO suma_venituri
  69. FROM EMP
  70. WHERE DEPTNO = dept_mgr;
  71. DBMS_OUTPUT.PUT_LINE('suma_venituri: '|| suma_venituri);
  72.  
  73. EXCEPTION
  74. WHEN NO_DATA_FOUND THEN
  75. DBMS_OUTPUT.PUT_LINE('NICIUN ANGAJAT');
  76. WHEN TOO_MANY_ROWS THEN
  77. DBMS_OUTPUT.PUT_LINE('PREA MULTE INREGISTRARI');
  78. when v_exc then
  79. dbms_output.put_line('Eroare noua');
  80. END;
  81. /
  82.  
  83.  
  84. --2
  85. declare
  86. plafon salgrade.grade%type:='&plafon';
  87. min_limit salgrade.losal%type;
  88. max_limit salgrade.hisal%type;
  89. nr_angajati number;
  90. v_too_many exception;
  91. begin
  92. select losal, hisal into min_limit, max_limit
  93. from salgrade
  94. where grade=plafon;
  95.  
  96. select count(*) into nr_angajati
  97. from emp
  98. where sal >= min_limit and sal <= max_limit;
  99. dbms_output.put_line('Nr angajati '||nr_angajati);
  100.  
  101. case
  102. when nr_angajati<2 then dbms_output.put_line('Prea putini angajati');
  103. when nr_angajati>=2 and nr_angajati<=4 then dbms_output.put_line('Destui angajati');
  104. when nr_angajati=5 then dbms_output.put_line('Prea multi angajati');
  105. when nr_angajati>5 then raise v_too_many;
  106. else
  107. dbms_output.put_line('Numar potrivit');
  108. end case;
  109. exception
  110. when v_too_many then
  111. dbms_output.put_line('Prea multe inregistrari');
  112. end;
  113. /
  114.  
  115. --3
  116. declare
  117. nr_angajati number;
  118. nume_dept dept.dname%type:='&nume_dept';
  119. id_dept dept.deptno%type;
  120. begin
  121. select deptno into id_dept
  122. from dept
  123. where dname=nume_dept;
  124. dbms_output.put_line('Departament: '||id_dept);
  125.  
  126. select count(*) into nr_angajati
  127. from emp a join emp b
  128. on a.mgr=b.empno
  129. where a.sal>b.sal;
  130. dbms_output.put_line('Nr ang: '||nr_angajati);
  131.  
  132. exception
  133. when no_data_found then
  134. dbms_output.put_line('Niciun angajat gasit');
  135. when too_many_rows then
  136. dbms_output.put_line('Prea multe inregistrari');
  137. when others then
  138. dbms_output.put_line('Error');
  139. end;
  140. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement