【问题标题】:Can't fix Error: PL/SQL Statement ignored无法修复错误:PL/SQL 语句被忽略
【发布时间】:2017-09-15 14:28:15
【问题描述】:

我刚刚开始使用触发器。在尝试编译下一个代码片段时,错误会在日志中列出,如下所示:“错误(2,3):PL/SQL:SQL 语句被忽略”和“错误(2,7):PL/SQL:ORA-00922 :缺少或无效的选项”。 我不明白这个问题。有人可以帮忙吗?

CREATE OR REPLACE TRIGGER CONT_VIG
BEFORE INSERT ON CONTRACTS
FOR EACH ROW
WHEN (OLD.CLIENTID = NEW.CLIENTID AND OLD.ENDDATE > NEW.STARTDATE)

BEGIN
SET (OLD.enddate = :NEW.startdate-1);    
END;  

【问题讨论】:

标签: sql oracle


【解决方案1】:

看看这个this-oraclethis-stackoverflow

试试这个:

CREATE TRIGGER hr.salary_check
      BEFORE INSERT OR UPDATE OF salary, job_id ON hr.employees
      FOR EACH ROW
         WHEN (new.job_id <> 'AD_VP')
      pl/sql_block

【讨论】:

    【解决方案2】:

    您无法更改 OLD 值...

    替换

    SET (OLD.enddate = :NEW.startdate-1);    
    

    例如:

    :NEW.startdate := sysdate ;
    

    (我删除了 SET,因为我看不到它的用处)

    【讨论】:

    • 删除 SET 与“有用性”无关——这是完全错误的
    • a_horse_with_no_name : 是
    猜你喜欢
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多