如何调试此SQL错误消息,"无法插入NULL"?

时间:2014-09-03 14:16:06

标签: sql oracle

OUT_RC = 37 ORA-01400: cannot insert NULL into ("PARTY"."SOURCE_SYSTEM_PARTY_CHARC"."PTY_CHARC_TY_VLU"): ORA-06512: at "PARTY.UP_MANAGE_SRC_SYS_PARTY_CHAR", line 131

我收到此错误消息,但第131行是MERGE语句

MERGE INTO PARTY.SOURCE_SYSTEM_PARTY_CHARC SSPC
  USING (SELECT l_sspc_chgs(index).PTY_CHARC_TY_ID AS PTY_CHARC_TY_ID, 
                l_sspc_chgs(index).SRC_SYS_PTY_ID AS SRC_SYS_PTY_ID, ... 

她的代码更多(包围上面的MERGE行:

OPEN SRC_SYS_PTY_CHARC_STG_CUR;
     LOOP
        FETCH SRC_SYS_PTY_CHARC_STG_CUR
             BULK COLLECT INTO  l_sspc_chgs LIMIT blklimit;

        FOR indx IN 1 .. l_sspc_chgs.COUNT
        LOOP
             IF (l_sspc_chgs(indx).DLTD_IND = 'N')
                THEN 
                     MERGE INTO PARTY.SOURCE_SYSTEM_PARTY_CHARC SSPC
                           USING (SELECT l_sspc_chgs(indx).PTY_CHARC_TY_ID AS PTY_CHARC_TY_ID,
                                                  l_sspc_chgs(indx).SRC_SYS_PTY_ID AS SRC_SYS_PTY_ID,
                                                  l_sspc_chgs(indx).PTY_CHARC_TY_VLU AS PTY_CHARC_TY_VLU,
                                                  SYSTIMESTAMP AS CREATE_TS,
                                                  USER AS CREATE_USER_ID,
                                                  SYSTIMESTAMP AS UPDATE_TS,
                                                  USER AS UPDATE_USER_ID
                                        FROM DUAL) SRC
                                ON (SSPC.PTY_CHARC_TY_ID = SRC.PTY_CHARC_TY_ID
                               AND SSPC.SRC_SYS_PTY_ID = SRC.SRC_SYS_PTY_ID)
                    WHEN MATCHED THEN
                         UPDATE SET PTY_CHARC_TY_VLU =  SRC.PTY_CHARC_TY_VLU
                                           ,UPDATE_TS = SRC.UPDATE_TS
                                           ,UPDATE_USER_ID = SRC.UPDATE_USER_ID               
                    WHEN NOT MATCHED THEN
                        INSERT  ( SRC_SYS_PTY_CHARC_ID, PTY_CHARC_TY_ID, SRC_SYS_PTY_ID,
                                      PTY_CHARC_TY_VLU, CREATE_TS, CREATE_USER_ID, 
                                      UPDATE_TS, UPDATE_USER_ID)
                                   VALUES (
                                        SOURCE_SYSTEM_PARTY_CHARC_SEQ.NEXTVAL,

...

l_sspc_chgs用于批量收集(来自代码顶部):

TYPE sspc_chgs IS TABLE OF SRC_SYS_PTY_CHARC_STG_CUR%ROWTYPE
         INDEX BY PLS_INTEGER; 

l_sspc_chgs sspc_chgs;

1 个答案:

答案 0 :(得分:1)

您的列“PARTY”。“SOURCE_SYSTEM_PARTY_CHARC”。“PTY_CHARC_TY_VLU”必须具有“NOT NULL”约束。

尝试替换

l_sspc_chgs(indx).PTY_CHARC_TY_VLU AS PTY_CHARC_TY_VLU

NVL(l_sspc_chgs(indx).PTY_CHARC_TY_VLU, 'Default value') AS PTY_CHARC_TY_VLU