Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. CREATE OR REPLACE VIEW PracProj
  2. (nazwisko, stanowisko, placa, data_zatr, nr_dzialu, Nazwa_proj, budzet, Data_startu)
  3. AS SELECT ENAME, JOB, SAL, HIREDATE, DEPTNO, PNAME, Budget, START_DATE
  4. FROM emp, proj, proj_emp
  5. WHERE emp.empno = proj_emp.empno and proj.projno = proj_emp.projno
  6.  
  7.  
  8. CREATE or replace TRIGGER PracProj_insert
  9. INSTEAD OF INSERT ON PracProj
  10. FOR EACH ROW
  11. DECLARE
  12. p NUMBER;
  13. r NUMBER;
  14. s NUMBER;
  15. numerProjektu NUMBER;
  16. numerPracownika NUMBER;
  17. projektRzad Proj%ROWTYPE;
  18. pracownikRzad emp%ROWTYPE;
  19. BEGIN
  20. SELECT Count(*) INTO p FROM Proj
  21. WHERE Proj.PNAME = :NEW.Nazwa_proj;
  22. IF p=0 THEN
  23. Select NVL(max(PROJNO)+1,1) into numerProjektu from Proj;
  24. INSERT INTO Proj VALUES(numerProjektu, :NEW.Nazwa_Proj, :NEW.budzet, :NEW.Data_startu, null);
  25. ELSE
  26. UPDATE Proj SET budget =:NEW.budzet, start_date =:NEW.Data_startu, end_date = null
  27. WHERE Proj.PNAME = :NEW.Nazwa_Proj;
  28. END IF;
  29. SELECT Count(*) INTO r FROM Emp
  30. WHERE Emp.ename = :NEW.nazwisko;
  31. IF r=0 THEN
  32. Select NVL(max(empno)+1,1) into numerPracownika from emp;
  33. INSERT INTO Emp VALUES(numerPracownika, :NEW.Nazwisko , :NEW.stanowisko, null, :NEW.data_zatr,:NEW.placa,null,:NEW.nr_dzialu);
  34. END IF;
  35. SELECT * INTO projektRzad
  36. FROM (SELECT * FROM proj WHERE PROJ.Pname = :NEW.Nazwa_Proj)
  37. WHERE ROWNUM = 1;
  38. SELECT * INTO pracownikRzad
  39. FROM (SELECT * FROM emp WHERE EMP.Ename = :NEW.nazwisko)
  40. WHERE ROWNUM = 1;
  41. numerProjektu := projektRzad.PROJNO;
  42. numerPracownika := pracownikRzad.EMPNO;
  43. SELECT Count(*) INTO s FROM PROJ_EMP
  44. WHERE PROJ_EMP.PROJNO = numerProjektu AND PROJ_EMP.EMPNO = numerPracownika;
  45. IF s=0 THEN
  46. INSERT INTO PROJ_EMP VALUES(numerProjektu, numerPracownika);
  47. END IF;
  48. end;
  49. /
  50. show errors;
  51.  
  52. insert into PracProj
  53. values('ZZZdoTestu','CLERK',80000,sysdate,20,'PROJECT100',40000,sysdate);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement