create or replace trigger fineCalc
AFTER UPDATE ON book_issue
for each row
when ((new.date_of_return-old.date_of_issue)>7)
declare
rcpt_no number;
s_id char(10);
begin
if :old.card_id in (select card_id from STUDENT_BOOK_ISSUE)
then
select max(receipt_no) into rcpt_no from fine;
select student_id into s_id from STUDENT_BOOK_ISSUE sbi where sbi.card_id=:old.card_id;
insert into fine values(rcpt_no+1,((:NEW.date_of_return-:OLD.date_of_issue-7)*5),s_id);
end if;
end;
Bu ORA-04079 alır: Apex SQL Atölyesi'nde geçersiz tetik şartname: ORA-04079: geçersiz tetik şartname
bunu nasıl düzeltebilirim?
Bu, PLS-00405 alır: bu bağlamda alt sorguya izin verilmiyor, ORA-04079 değil. "If", [sorgu sonucunu bir değişkene almanız gerekir] (http://stackoverflow.com/a/29134619/266304) 'in bir parçası olarak alt sorgunuz olamaz. Lütfen [İyi bir soru nasıl sorabilirim?] (Http://stackoverflow.com/help/how-to-ask) adresine bakın. Çalıştığınız gerçek kodu ve aldığınız hatayı göstermek iyi bir başlangıç olacaktır. –
ben oracle 11g .... tetikleme işlemi gerçekleştiriyorum oracle SQL Developer iken ORA: 04079 hata gösteriyor Bu PLS-00405: Subquery bu bağlamda izin verilmiyor ..... şimdi ne yapmalıyım –
Hatayla ilgili değil, ancak 'max (receipt_no)' yi kullanmak iyi bir fikir değildir; [bir dizi kullanmak daha iyidir] (http://stackoverflow.com/q/17210835/266304). –