Advertisement
Guest User

Untitled

a guest
Jul 21st, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.17 KB | None | 0 0
  1. CREATE OR REPLACE TRIGGER t0
  2. before INSERT ON intervento
  3. FOR each ROW
  4. DECLARE
  5. da_ric NUMBER(3,0);
  6. eta_paz NUMBER(3,0);
  7. sa_op intervento.sala_op%TYPE;
  8. wrong_type EXCEPTION;
  9. reg_early_op EXCEPTION;
  10. elderly_early_op EXCEPTION;
  11. BEGIN
  12. SELECT (data_ric-data_e_ora),sala_op,FLOOR((SYSDATE-DATA_NASCITA)/365) INTO da_ric,sa_op,eta_paz
  13. FROM persona NATURAL join paziente join intervento
  14. ON cf_paz=cf
  15. WHERE cf_paz=:NEW.cf_paz
  16. AND sala_op IN ('SALA UNO','SALA DUE');
  17. IF (:NEW.sala_op='SALA UNO' AND :NEW.tipo<>'LASER') OR (:NEW.sala_op='SALA DUE' AND :NEW.tipo<>'CHIRURGIA GENERALE')
  18. THEN RAISE wrong_type;
  19. END IF;
  20. IF (da_ric<7 AND sa_op='SALA UNO' AND eta_paz <60) OR (da_ric<14 AND sa_op='SALA DUE' AND eta_paz<60)
  21. THEN RAISE reg_early_op;
  22. END IF;
  23. IF (da_ric<12 AND sa_op='SALA UNO' AND eta_paz >=60) OR (da_ric<18 AND sa_op='SALA DUE' AND eta_paz>=60)
  24. THEN RAISE elderly_early_op;
  25. END IF;
  26. EXCEPTION
  27. WHEN wrong_type THEN raise_application_error(-20001,'Tipo sbagliato');
  28. WHEN reg_early_op THEN raise_application_error(-20002,'Ricovero troppo recente per operare');
  29. WHEN elderly_early_op THEN raise_application_error(-20003,'Ricevero troppo recente per un ultra-sessantenne');
  30. END;
  31. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement