PL/SQL: ORA-00936: 使用触发器时缺少表达式
PL/SQL: ORA-00936: missing expression while using trigger
我正在尝试使用触发器从一个数据库更新另一个数据库中的 table。我收到缺少表达式错误,我无法找出原因。错误在 :new.FO_CD != :old.FO_CD
行。我还在 PL/SQL: SQL Statement ignored 行 :new.END_DT != :old.END_DT OR
处出现错误。是什么导致了这两个错误?
CREATE OR REPLACE TRIGGER TRG_UPDATE_ITIN
AFTER DELETE OR UPDATE
ON FDL.PLA_ET
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
IF DELETING THEN
UPDATE
FMS.ITIN
SET
PLN_ET_UUID = NULL
WHERE
PLN_ET_UUID = :OLD.PLN_ET_UUID;
ELSIF UPDATING THEN
IF
:new.START_DT != :old.START_DT OR
:new.END_DT != :old.END_DT OR
:new.CREATED_DTTM != :old.CREATED_DTTM OR
:new.CREATED_USER_ID != :old.CREATED_USER_ID OR
:new.ACT_UUID != :old.ACT_UUID OR
:new.FO_CD != :old.FO_CD
THEN UPDATE FMS.ITIN
SET
START_DATE = :new.START_DT,
END_DATE = :new.END_DT,
CREATION_DATE = = :new.CREATED_DTTM,
CREATED_BY_USER = :new.CREATED_USER_ID,
ACT_UUID = :new.ACT_UUID,
FO_CTL_NBR = :new.FO_CD
WHERE
PLN_ET_UUID = :new.PLN_ET_UUID;
END IF;
END IF;
END;
这是错误的:
UPDATE fms.itin SET
start_date = :new.start_dt,
end_date = :new.end_dt,
creation_date = = :new.created_dttm, --> here
created_by_user = :new.created_user_id,
你有两个连续的 = =
标志。
也许还有其他错误,但没有你的表格,我无法运行编码你发布的代码。考虑发布 CREATE TABLE
声明。
我正在尝试使用触发器从一个数据库更新另一个数据库中的 table。我收到缺少表达式错误,我无法找出原因。错误在 :new.FO_CD != :old.FO_CD
行。我还在 PL/SQL: SQL Statement ignored 行 :new.END_DT != :old.END_DT OR
处出现错误。是什么导致了这两个错误?
CREATE OR REPLACE TRIGGER TRG_UPDATE_ITIN
AFTER DELETE OR UPDATE
ON FDL.PLA_ET
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
BEGIN
IF DELETING THEN
UPDATE
FMS.ITIN
SET
PLN_ET_UUID = NULL
WHERE
PLN_ET_UUID = :OLD.PLN_ET_UUID;
ELSIF UPDATING THEN
IF
:new.START_DT != :old.START_DT OR
:new.END_DT != :old.END_DT OR
:new.CREATED_DTTM != :old.CREATED_DTTM OR
:new.CREATED_USER_ID != :old.CREATED_USER_ID OR
:new.ACT_UUID != :old.ACT_UUID OR
:new.FO_CD != :old.FO_CD
THEN UPDATE FMS.ITIN
SET
START_DATE = :new.START_DT,
END_DATE = :new.END_DT,
CREATION_DATE = = :new.CREATED_DTTM,
CREATED_BY_USER = :new.CREATED_USER_ID,
ACT_UUID = :new.ACT_UUID,
FO_CTL_NBR = :new.FO_CD
WHERE
PLN_ET_UUID = :new.PLN_ET_UUID;
END IF;
END IF;
END;
这是错误的:
UPDATE fms.itin SET
start_date = :new.start_dt,
end_date = :new.end_dt,
creation_date = = :new.created_dttm, --> here
created_by_user = :new.created_user_id,
你有两个连续的 = =
标志。
也许还有其他错误,但没有你的表格,我无法运行编码你发布的代码。考虑发布 CREATE TABLE
声明。