zoukankan      html  css  js  c++  java
  • ORA-01400: 无法将 NULL 插入 ("CHARGE_WQRL"."SF_JMQTFY_T"."BH")

    [ERROR] JmCheckManageDaoImpl:901 - java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("CHARGE_WQRL"."SF_JMQTFY_T"."BH")

    这个问题很多时候是没有为该表建立触发器(trigger)导致的,或者是序列(sequence)没建立,查看一下,确保两个都要有。

    这是建立sequence

    create sequence SF_JMQTFY_S
    minvalue 1
    maxvalue 999999999999999999999999999
    start with 1
    increment by 1
    cache 20;

    建立trigger

    CREATE OR REPLACE TRIGGER "CHARGE_WQRL"."SF_JMQTFY_TR" BEFORE INSERT ON SF_JMQTFY_T FOR EACH ROW
    DECLARE
    BEGIN
      SELECT SF_JMQTFY_S.NEXTVAL INTO :NEW.BH FROM DUAL;
    END;

    附:出现问题的存储过程,可以看到SF_JMJC_T的BH是声明了的,直接从序列获取,而SF_JMQTFY_T的BH是没有声明的,如果不使用触发器调用是无法赋值的。

      --设置稽查表的sequence
      SELECT SF_JMJC_S.NEXTVAL INTO V_BH FROM DUAL;
      --稽查表插入信息
      INSERT INTO SF_JMJC_T
        (BH, CNQ, YHBH, JCDZ, YRSJ, YSFMJ, SFMJ, YGNZT, GNZT, YSFLB, SFLB, CLJG,
         JCR, JCRQ, WYJ, CZY, BZ,QFJE)
      VALUES
        (V_BH, V_CNQ, V_YHBH, V_JCDZ, V_YRSJ, V_YSFMJ, V_SFMJ, V_YGNZT, V_GNZT,
         V_YSFLB, V_SFLB, V_CLJG, V_JCR, V_JCRQ, V_WYJ, V_CZY, V_BZ,V_WYJ);
      --其他费用表插入信息(违约金>0时将其插入欠费金额)
      IF V_WYJ >= 0 THEN
        INSERT INTO SF_JMQTFY_T
          (CNQ, YHBH, FYBH, YSJE, QFJE, FYLB,YWBH)
        VALUES
          (V_CNQ, V_YHBH, 0, V_WYJ, V_WYJ, '违约金',V_BH);
      END IF;
  • 相关阅读:
    修改服务器时间及时区
    风情万种awk
    追忆似水流年sed
    lvm笔记
    正则不怎么会用
    在CentOS7.5的虚拟环境下新建你的django项目
    Django学习过程中的排错总结
    我一直记不住的vim用法
    关于自建yum源拾遗
    Djangp2.x版本报错找不到模版目录下的文件
  • 原文地址:https://www.cnblogs.com/zjfjava/p/7536587.html
Copyright © 2011-2022 走看看