2014-09-03 30 views
0
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聲明如何調試此SQL錯誤消息「無法插入NULL」?

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, ... 

她EIS更多的代碼(包圍上述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; 
+0

顯示你有更多的SQL代碼,什麼是'l_sspc_chgs(指數).PTY_CHARC_TY_ID'等? – zaratustra 2014-09-03 14:17:15

+1

這是一個SELECT試圖插入NULL我認爲的MERGE。檢查你的SELECT。 – 2014-09-03 14:17:33

+0

@zaratustra - 好的,添加它 – Coffee 2014-09-03 14:18:38

回答

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 
+0

非常感謝 - 這固定它! – Coffee 2014-09-03 14:33:41