Db2 查找出错的列/字段

Db2 查找出错的列/字段,db2,cobol,mainframe,Db2,Cobol,Mainframe,我在一台大型机上工作,在表中插入一行时,我的DB2COBOL程序被SQLCODE-407禁用。我知道这个错误的补救方法,但是INSERT查询正在插入100多个字段。除了通过显示来知道哪个字段的空值有误之外,还有其他方法吗。下面是我收到的错误消息: DB2ERRD **ERROR** DB2 CALL UNSUCCESSFUL. SQLCODE = -407. WARNING FLAGS = DSNT408I SQLCODE = -407, ERROR: AN UPDATE,

我在一台大型机上工作,在表中插入一行时,我的DB2COBOL程序被SQLCODE-407禁用。我知道这个错误的补救方法,但是INSERT查询正在插入100多个字段。除了通过显示来知道哪个字段的空值有误之外,还有其他方法吗。下面是我收到的错误消息:

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

通常,我希望出错列的名称显示在
SQLCODE
消息中(事实上,
column
cannote
之间似乎有两个空格,我希望列的名称在此处)


但是,根据,实际的列名也可能显示在中。我会尝试输出
SQLERRMC
的值,以查看您的列是否显示在那里。

我会冒险猜测您已将
插入某个表(Col1,Col2,…,Col100)值(:var1,:var2,…,:var100)
或类似的内容(其中,
:varN
表示法是变量引用或文字值。我猜该表有一个额外的列Col101,该列具有NOTNULL属性且未指定默认值。这将导致尝试在该列中插入NULL,尝试将被拒绝。IOW:您的程序可能正常,但它所针对的表的架构已更改。调试:仔细查看表的实际架构和代码。