Wprowadzenie wyniku selecta do zmiennej

0

Już próbowałem chyba wszystkiego. Stworzyłem trigger, który ma wyświetlać powiadomienia w zależności od wyniku. Niestety do zmiennej FLAGA wartość nie jest nigdy wczytywana. Mój select zwraca albo nic (brak wyników), albo jeden wynik, czyli 1.

 CREATE OR REPLACE TRIGGER TR_EGZEMPLARZ 
BEFORE INSERT ON EGZEMPLARZ_FILMU 
FOR EACH ROW
DECLARE 
pragma autonomous_transaction;
FLAGA NUMBER DEFAULT 0;
IID NUMBER;

BEGIN
IID := :NEW.ID_EF;
SELECT COUNT(ID_EF) INTO FLAGA
FROM (
SELECT EF1.ID_EF FROM EGZEMPLARZ_FILMU EF1
WHERE EXISTS
      ( 
        SELECT EF2.ID_EF
        FROM EGZEMPLARZ_FILMU EF2
        WHERE EF1.ID_F = EF2.ID_F
        AND EF1.ID_TW = EF2.ID_TW
        AND EF1.ID_EF <> EF2.ID_EF
      )
ORDER BY EF1.ID_EF
)
WHERE ID_EF = IID
GROUP BY ID_EF;

IF FLAGA > 0 THEN
dbms_output.put_line('Egzemplarz tego filmu na tym nośniku już istnieje' || IID );
END IF;

EXCEPTION
  WHEN NO_DATA_FOUND THEN
    dbms_output.put_line('Nie ma duplikacji egzemplarzy' || FLAGA ||'   '|| IID);

END;
1

Nie wiem po co to robisz (te wszystkie dziwne rzeczy z Oracle) ale zostaw to. Chyba, że ktoś cię do tego zmusza, grożąc że kogoś zamorduje. Jeśli robisz to bo chcesz się nauczyć SQLa i/lub zaprzyjaźnić z Oracle to robisz to źle. Jeśli robisz to bo masz zamiar być potem programistą i/lub bazodanowcem to przestań bo robisz sobie krzywdę.
To co robisz mogę porównać do wkładania gwoździa do gniazdka - no przecież jak będę stał na izolatorze albo trafię w przewód N to mi się nic nie stanie - no niby racja ale jak nie trafisz? Dokładnie to od parunastu postów próbujesz zrobić - używasz elementów SQLa w sposób zupełnie do tego nie przeznaczony. A już użycie autonomous_transaction gdziekolwiek poza dokumentacją to szczyt nieodpowiedzialnego programowania. Sprawiasz, że coś co powinno zachowywać się w sposób, który chyba dla wszystkich jest logiczny i oczywisty nagle zaczyna się zachowywać zupełnie nieprzewidywalnie.

0

Problem jest taki, że dopiero zaczynam zabawę z bazami danych i mam bardzo mało czasu na zrobienie projektu przez co stworzenie go jest dla mnie ważniejsze niż dokładne zrozumienie środowiska i języka.

1 użytkowników online, w tym zalogowanych: 0, gości: 1