Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. CREATE OR REPLACE TRIGGER InsertGareGiocate
  3. INSTEAD OF INSERT ON NESTED TABLE GareGiocate OF Giocatori_V
  4. REFERENCING PARENT AS GiocatoriParent
  5. FOR EACH ROW
  6. DECLARE
  7. n INTEGER;
  8. dataNow DATE;
  9. dataGara DATE;
  10. ultimaBuca NUMBER(2);
  11. bucain     NUMBER(2);
  12. BEGIN  
  13.   --Non si possono inserire dati delle buche di gare future.
  14.   SELECT SYSDATE INTO dataNow FROM DUAL;
  15.   SELECT g.Data INTO dataGara FROM Gare_V g WHERE g.CodG = (DEREF(:NEW.gara)).CodG;
  16.   IF dataGara > dataNow THEN
  17.     raise_application_error (-20001, 'Impossibile inserire i dati relativi alle buche di una gara futura.
  18.    Data odierna: ' || dataNow || '. Data inserita: ' || dataGara);
  19.   ELSE
  20.     --La buca inserita deve essere uguale all'ultima buca inserita +1
  21.     SELECT (CAST(MAX(gg.buca) AS NUMBER(2))+1) INTO ultimaBuca
  22.     FROM TABLE(SELECT g.GareGiocate FROM Giocatori g WHERE g.CodG = :GiocatoriParent.CodG) gg
  23.     WHERE (DEREF(gg.gara)).CodG = (DEREF(:NEW.Gara)).CodG;
  24.    
  25.     SELECT CAST(:NEW.Buca AS NUMBER(2)) INTO Bucain FROM DUAL;
  26.    
  27.     IF ultimaBuca=bucain THEN
  28.        DBMS_OUTPUT.PUT_LINE('buca = ultimabuca');
  29.       INSERT INTO TABLE(SELECT g.GareGiocate FROM Giocatori g WHERE g.CodG = :GiocatoriParent.CodG)
  30.       VALUES(:NEW.Buca, :NEW.NColpi, :NEW.Gara);
  31.     ELSE
  32.       raise_application_error (-20001, 'Esiste già la buca numero ' || :NEW.buca
  33.       || ' per questa gara.      Eseguire UPDATE se si è interessati a modificarla. Altrimenti inserire la buca numero '
  34.       || ultimaBuca+1 || ' se possibile. L''inserimento non è stato eseguito.');
  35.     END IF;
  36. END;
  37. /
  38.  
  39. INSERT INTO TABLE(SELECT g.GareGiocate FROM Giocatori_V g WHERE g.CodG = 'AA008')
  40. VALUES(9, 16, (SELECT REF(g) FROM Gare g WHERE g.CodG = '12345'));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement