【问题标题】:Showing PL/SQL ERROR : ORA-00947: not enough values显示 PL/SQL 错误:ORA-00947:没有足够的值
【发布时间】:2022-01-23 13:14:29
【问题描述】:

请帮助我,如何填写正确的值? 因为值总是比较小,显示ERR值不够the error is in here

这是我的代码:

CREATE OR REPLACE TRIGGER REGION_HILMI_TRIGGER_WARNING
AFTER INSERT OR UPDATE OR DELETE ON REGION_HILMI
FOR EACH ROW
DECLARE 
warning VARCHAR2(400);
BEGIN 
IF INSERTING THEN 
warning:='Terjadi penambahan data di tabel regions, dengan
nilai region_id='||:NEW.region_id||' dan 
region_name='||:NEW.region_name; 
ELSIF UPDATING THEN 
warning:='Terjadi perubahan data di tabel regions, dengan 
nilai lama region_id='||:OLD.region_id||', 
region_name='||:OLD.region_name||' nilai baru 
region_id='||:NEW.region_id||', region_name='||:NEW.region_name;
ELSIF DELETING THEN 
warning:='Terjadi penghapusan data di tabel regions untuk 
region_id='||:OLD.region_id||' dan region_name='||:OLD.region_name; 
END IF; 
INSERT INTO REGION_HILMI_HISTORY(OLD_REGION_ID,OLD_REGION_NAME,NEW_REGION_ID,NEW_REGION_NAME,CHANGE_TIME,DESCRIPTION)
    VALUES(REGION_HILMI_SEQUENCE.NEXTVAL,USER,TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS'),warning);
END; 
/

【问题讨论】:

    标签: plsql ora-00947


    【解决方案1】:

    您的 INSERT 语句在 VALUES 子句中仅显示 4 项,但在列名列表中显示 6 项。它们必须匹配。

    【讨论】:

      【解决方案2】:

      谢谢先生,@TenG 通过添加此脚本解决:

      INSERT INTO REGION_HILMI_HISTORY(OLD_REGION_ID,OLD_REGION_NAME,NEW_REGION_ID,NEW_REGION_NAME,CHANGE_TIME,DESCRIPTION)
      
          
      VALUES(REGION_HILMI_SEQUENCE.NEXTVAL,:OLD.REGION_NAME,:NEW.REGION_ID,:NEW.REGION_NAME,TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS'),warning);
      

      【讨论】:

      • 您在@TenG 提供的答案之后的更正解决了错误消息,但如果列的名称遵循一些逻辑,我认为您的第二次插入在实现正确的意义上是不正确的功能。我的意思是,从名为 OLD_REGION_ID 的字段中的序列中插入新值是否有任何逻辑?插入值 OLD.region_id 不是更合乎逻辑吗?此外,CHANGE_TIME 列的类型是什么? SYSDATE 是一个返回 DATE 类型值的函数,因此对该值执行 TO_DATE 没有意义,TO_DATE 期望得到一个 VARCHAR2
      【解决方案3】:

      现在我尝试将数据插入到我的主表中,先生,

      但在我设置触发器后会出现这样的错误

      click to show image

      现在解决了.... 触发问题,

      我更改(TO_CHAR)>>>(TO_DATE)

      错误:

      VALUES(REGION_HILMI_SEQUENCE.NEXTVAL,:OLD.REGION_NAME,:NEW.REGION_ID,:NEW.REGION_NAME,TO_CHAR(SYSDATE,'DD-MON-YYYY HH24:MI:SS'),warning);
      

      工作:

      VALUES(REGION_HILMI_SEQUENCE.NEXTVAL,:OLD.REGION_NAME,:NEW.REGION_ID,:NEW.REGION_NAME,TO_DATE(SYSDATE,'DD-MON-YYYY HH24:MI:SS'),warning);
      

      【讨论】:

        猜你喜欢
        • 2020-01-25
        • 1970-01-01
        • 2020-07-25
        • 2020-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多