Вы можете заменить IF NEW.datum < NOW() THEN
на
IF :NEW.datum < systimestamp THEN
или IF :NEW.datum < current_timestamp THEN
, поскольку Oracle не содержит функции NOW()
.
И вам лучше объединить запросыв единицу путем преобразования в
SELECT count(case when nvl(Patient_ID,-1) = :new.Patient_ID then Patient_id end ),
count(case when nvl(Arzt_ID,-1) = :new.Arzt_ID then Arzt_ID end ),
count(case when nvl(Mitarbeiter_ID,-1) = :new.Mitarbeiter_ID then Mitarbeiter_ID end )
INTO Termin_Anzahl_Patient, Termin_Anzahl_Arzt, Termin_Anzahl_Mitarbeiter
FROM Termin
WHERE Datum = :NEW.Datum;
и размещения их сразу после BEGIN
(поскольку эти переменные должны быть установлены до того, как они были использованы операторами IF
), и предполагая, что эти значения ID
неотрицательныцелые числа как всегда предпочтительнее.