2014-09-04 6 views
0

메인 프레임에서 작업하고 있고 DB2 Cobol 프로그램이 테이블에 행을 삽입하는 동안 SQLCODE -407로 이상 종료되었습니다. 이 오류에 대한 해결책을 알고 있지만 INSERT 쿼리는 100 개가 넘는 필드에 삽입됩니다. NULL 값에 대해 어떤 필드가 오류인지 알기 위해 표시를하는 것 이외의 다른 방법이 있습니까?오류가있는 열/필드 찾기

DB2ERRD **ERROR** DB2 CALL UNSUCCESSFUL. SQLCODE = -407. WARNING FLAGS =  
DSNT408I SQLCODE = -407, ERROR: AN UPDATE, INSERT, OR SET VALUE IS NULL, BUT THE OBJECT COLUMN CANNOT CONTAIN NULL 
      VALUES                 
DSNT418I SQLSTATE = 23502 SQLSTATE RETURN CODE        
DSNT415I SQLERRP = DSNXRIHB SQL PROCEDURE DETECTING ERROR     
DSNT416I SQLERRD = -136 0 0 -1 0 0 SQL DIAGNOSTIC INFORMATION   
DSNT416I SQLERRD = X'FFFFFF78' X'00000000' X'00000000' X'FFFFFFFF' X'00000000' X'00000000' SQL DIAGNOSTIC 
     INFORMATION 
+0

당신은'INSERT INTO SomeTable (Col1, Col2, ..., Col100) VALUES (: var1, : var2, ..., var100)'또는 이와 비슷한 것 (': varN' 표기법 변수 참조 또는 리터럴 값입니다. 내 생각 엔 테이블이 아닌 NULL 특성 및 기본값이 지정되지 않은 추가 열 Col101 있습니다.이 NULL을 해당 열에 삽입하려고 시도하고 시도 IOW : 작업중인 테이블의 스키마가 변경되었다는 것을 제외하면 프로그램이 정상적으로 작동 할 수 있습니다. 디버깅 : 테이블과 코드의 실제 스키마를 자세히 살펴보십시오. –

답변

1

일반적으로, 나는 당신의 SQLCODE 메시지에 표시하는 오류에 열 이름을 기대하는 (그리고 COLUMNCANNOT 사이에 두 개의 공백이있는 것처럼 실제로, 그것은 나타납니다 아래 내가받은 오류 메시지는 , 어디에서 열 이름을 기대할 것인가).

그러나 the docs에 따르면 실제 열 이름도 SQLCA에 나타날 수 있습니다. 귀하의 열이 거기에 나타나는지 확인하기 위해 SQLERRMC의 값을 출력 해 봅니다.