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;
答案 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