第2行出错:PL / SQL:语句被忽略,我不知道为什么

时间:2014-12-19 17:55:49

标签: plsql

当我运行我的代码时,我一直收到一条错误,说该语句在第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;

1 个答案:

答案 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;