【问题标题】:PL/SQL: ORA-00936: missing expression while using triggerPL/SQL: ORA-00936: 使用触发器时缺少表达式
【发布时间】:2021-10-29 18:03:30
【问题描述】:

我正在尝试使用触发器从另一个数据库中更新一个表。我收到了丢失的表达式错误,我无法找出原因。错误位于:new.FO_CD != :old.FO_CD 行。我还在 :new.END_DT != :old.END_DT OR 行收到 PL/SQL: SQL Statement denied 错误。什么可能导致这两个错误?

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;

【问题讨论】:

    标签: oracle plsql triggers


    【解决方案1】:

    这是错误的:

    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 声明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      相关资源
      最近更新 更多