SQL语句忽略Oracle触发器中缺少的表达式

SQL语句忽略Oracle触发器中缺少的表达式,oracle,triggers,sql-insert,Oracle,Triggers,Sql Insert,我正在编写下面的触发器,试图插入此字段的值field\u OLD\u value,field\u NEW\u value时出错。我必须根据Select查询插入此字段的值,但我得到的错误是SQL语句忽略了Oracle触发器中缺少的ORA-000936表达式。我不想对字段field\u OLD\u VALUE,field\u NEW\u VALUE使用变量,因为我在这个问题中只为ENV\u ID字段编写了insert语句,并且我在这个触发器中添加了许多其他字段。因此,很难对每个领域都进行调整和维护

我正在编写下面的触发器,试图插入此字段的值
field\u OLD\u value,field\u NEW\u value
时出错。我必须根据Select查询插入此字段的值,但我得到的错误是
SQL语句忽略了Oracle触发器中缺少的ORA-000936表达式
。我不想对字段
field\u OLD\u VALUE,field\u NEW\u VALUE
使用变量,因为我在这个问题中只为
ENV\u ID
字段编写了insert语句,并且我在这个触发器中添加了许多其他字段。因此,很难对每个领域都进行调整和维护

create or replace TRIGGER RATOR_MONITORING_CONFIGURATION."TRG_TRK_KPI_DEFINITION" AFTER UPDATE ON RATOR_MONITORING_CONFIGURATION.KPI_DEFINITION
  FOR EACH ROW

BEGIN
  --NEU
  IF NOT  :old.ENV_ID=:new.ENV_ID THEN
    INSERT INTO RATOR_MONITORING_CONFIGURATION.FIELD_TRACKING  (FIELD_TRACKING_ID,TABLE_NAME,TABLE_ID, FIELD_NAME,FIELD_OLD_VALUE,FIELD_NEW_VALUE,USER_ID, TIMESTAMP)
    VALUES (FIELD_TRACKING_SEQ.NEXTVAL,'KPI_DEFINITION',:new.KPI_DEF_ID,'Environment',to_char(Select NAME FROM ENVIRONMENT WHERE ENV_ID =:old.ENV_ID),to_char(Select NAME FROM ENVIRONMENT WHERE ENV_ID =:new.ENV_ID),:new.LAST_UPDATED_BY,:new.LAST_UPDATED_DATE );
  END IF;
END;

如果使用子查询作为参数,则需要将它们括在额外的括号中:

to_char((Select NAME FROM ENVIRONMENT WHERE ENV_ID =:old.ENV_ID))