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;
谢谢回答。但是,如果我把分号(;)后DED_PARM.OVRD_DED_PC = COALESCE(:new.OVRD_DED_PC,0); (前FORM) 我面临着以下错误: - 5/3 PLS-00103:出现符号“FROM”在需要下列之一时: (开始的情况下宣告结束退出异常的转到如果环模 空pragma raise return select update with with
我猜,我不应该在FORM之前加上分号,否则在放置代码后我仍然面临同样的错误。@ Kacper –
你根本不需要那里。https://docs.oracle.com/cd/B19306 _01/server.102/b14200/statements_10007.htm#i2112182 @AshutoshBajpai – Kacper