TRIGGER tU_DEDPARM_OEFix编译警告:执行与警告

问题描述:

我下面运行完成在Oracle中创建触发器查询: -TRIGGER tU_DEDPARM_OEFix编译警告:执行与警告

SQL>CREATE OR REPLACE TRIGGER tU_DEDPARM_OEFix 
    AFTER INSERT OR UPDATE ON DED_PARM FOR EACH ROW 
BEGIN  
    UPDATE DED_PARM SET 
    DED_PARM.OVRD_DED_AM = COALESCE(i.OVRD_DED_AM,0.00), 
    DED_PARM.OVRD_DED_PC = COALESCE(i.OVRD_DED_PC,0.00000)  
     FROM DED_PARM AS d INNER JOIN inserted AS i 
     ON (i.INTERNAL_EMPL_ID=d.INTERNAL_EMPL_ID AND 
      i.APPOINTMENT_ID=d.APPOINTMENT_ID AND 
      i.DEDTYP_CD=d.DEDTYP_CD AND 
      i.EFFECTIVE_DT=d.EFFECTIVE_DT) 
    END;/

查询的执行后,我面临着以下错误: -

TRIGGER tU_DEDPARM_OEFix编译警告:执行完成时发出 警告。

然后我跑到下面的查询看到编译错误

SQL>触发TU_DEDPARM_OEFIX显示错误的错误;

下面是错误的: -

5/3 PL/SQL:ORA-00933:SQL命令不能正确地结束2/3
PL/SQL:SQL语句忽略10/4 PLS -00103:遇到 符号“结束文件”在需要下列之一时:

(开始的情况下宣告结束退出异常的转到如果环模
空编译提高收益选择更新而与 < < 继续关闭当前删除获取锁芯打开回滚 保存点设置SQL执行提交FORALL合流管清洗

有人可以帮我准备正确的查询。仅供参考 - 触发器已创建,但创建时出现上面显示的编译错误。

谢谢!

这在Oracle中是无效的更新语法。我不知道什么inserted在MSSQL(:new:old)做的,但我认为这是Oracle语句会触发

CREATE OR REPLACE TRIGGER tU_DEDPARM_OEFix 
    AFTER INSERT OR UPDATE ON DED_PARM FOR EACH ROW 
BEGIN 
update DED_PARM d SET 
    OVRD_DED_AM = COALESCE(:new.OVRD_DED_AM,0), 
    OVRD_DED_PC = COALESCE(:new.OVRD_DED_PC,0) 
where INTERNAL_EMPL_ID = :new.INTERNAL_EMPL_ID and 
     APPOINTMENT_ID = :new.APPOINTMENT_ID and 
     DEDTYP_CD = :new.DEDTYP_CD and 
     EFFECTIVE_DT = :new.EFFECTIVE_DT; 
END; 
+0

谢谢回答。但是,如果我把分号(;)后DED_PARM.OVRD_DED_PC = COALESCE(:new.OVRD_DED_PC,0); (前FORM) 我面临着以下错误: - 5/3 PLS-00103:出现符号“FROM”在需要下列之一时: (开始的情况下宣告结束退出异常的转到如果环模 空pragma raise return select update with with

+0

我猜,我不应该在FORM之前加上分号,否则在放置代码后我仍然面临同样的错误。@ Kacper –

+1

你根本不需要那里。https://docs.oracle.com/cd/B19306 _01/server.102/b14200/statements_10007.htm#i2112182 @AshutoshBajpai – Kacper