当我运行我的代码时,我一直收到一条错误,说该语句在第2行被忽略
CREATE OR REPLACE TRIGGER invalid_Year
BEFORE INSERT OR UPDATE OF Financial_Year ON Area_Offence
FOR EACH ROW
BEGIN
IF :NEW.Financial_Year > (SELECT to_char(Max(Offence_Date), 'YYYY') FROM Offence) THEN
dbms_output.put_line('Invalid Year entered');
raise_application_error(-20001, 'Invalid Year entered');
END IF;
END invalid_Year;
答案 0 :(得分:0)
dbms_output.put_line('Invalid Year entered');
触发器没有tty或终端。进程上下文位于oracle服务器进程之一而不是用户进程中。因此,投诉出现在这条线上。
我认为在oracle 9i的旧版本oracle中这是可以的。
做了一些改变。见下文。我在开关处睡着了。
[更正]我看了一些旧代码,没有触发器有dbms_output调用。 我在存储过程中看到了它。所以,我会得出结论,从来没有被允许
CREATE OR REPLACE TRIGGER invalid_Year
BEFORE INSERT OR UPDATE OF Financial_Year ON Area_Offence
FOR EACH ROW
DECLARE
offense_date varchar2(4):=NULL;
BEGIN
SELECT to_char(Max(Offence_Date), 'YYYY' )
into offense_date
from Offence;
IF :NEW.Financial_Year > Offense_Date THEN
dbms_output.put_line('Invalid Year entered');
raise_application_error(-20001, 'Invalid Year entered');
END IF;
END invalid_Year;