Plsql PLS-00103遇到错误,符号为;从「;应为以下情况之一时:。()、*%&;-+/

Plsql PLS-00103遇到错误,符号为;从「;应为以下情况之一时:。()、*%&;-+/,plsql,Plsql,我正在尝试验证我的财政年度字段,因此该值不能大于当前日期,财政年度数据类型为数字。我试图将存储在犯罪日期的值与用户在财政年度字段中输入的值进行比较,我知道犯罪字段中的数据是有效的,因为我使用的是数据选择器,并且我已经对其进行了验证,因此选择的值不能大于当前系统日期 第3行错误:PLS-00103:在预期以下情况之一时遇到符号“FROM”:。(),*%&-+/at mod rem和/或作为| | multiset The symbol.”插入“FROM”之前继续 CREATE OR REPLACE

我正在尝试验证我的财政年度字段,因此该值不能大于当前日期,财政年度数据类型为数字。我试图将存储在犯罪日期的值与用户在财政年度字段中输入的值进行比较,我知道犯罪字段中的数据是有效的,因为我使用的是数据选择器,并且我已经对其进行了验证,因此选择的值不能大于当前系统日期

第3行错误:PLS-00103:在预期以下情况之一时遇到符号“FROM”:。(),*%&-+/at mod rem和/或作为| | multiset The symbol.”插入“FROM”之前继续

CREATE OR REPLACE TRIGGER invalid_Year
  BEFORE INSERT OR UPDATE OF Financial_Year ON Area_Offence
  FOR EACH ROW

  BEGIN

IF(:NEW.Financial_Year  > 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;

使用
选择

IF (SELECT :NEW.Financial_Year > 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;

我建议如下:

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;

分享和享受。

iv使用了你的代码,我得到了ORA-04079:无效的触发器规范我运行了你的代码,我得到了这个错误,错误在第2行:PL/SQL:Statement ignoredPlease编辑你的问题,包括AREA_冒犯和冒犯表的模式。谢谢。可能重复