各种DB2数据类型的等效COBOL主机变量是什么?

问题:当主机变量和SELECT语句中的列数不匹配时,COBOL-DB2程序将如何工作?

如果列数和主机变量数不匹配,查询将失败。例如,如果我们在处理ORDERS DB2表的COBOL-DB2程序中使用了以下查询。

示例

EXEC SQL
   SELECT ORDER_ID,
      ORDER_AMOUNT,
      ORDER_DATE,
      ORDER_STATUS
   INTO :WS-ORDER-ID,
      :WS-ORDER-AMOUNT,
      :WS-ORDER-DATE,
   FROM ORDERS WHERE ORDER_DATE = ‘2020-09-15’
END-EXEC

列和主机变量的数量不匹配。SELECT语句中总共使用了4列,并且仅使用了3个主机变量。在这种情况下,查询将失败,并且可以通过两种方式检测这种情况。

  • 如果不匹配,SQLCA的SQLWARN3字段将获得值“ W”。

  • 在某些安装中,当不匹配时,SQLCA的SQLCODE字段将错误代码显示为-804。

我们可以使用IF条件来检查SQLWARN3或SQLCODE中的值,并相应地指导程序处理。

以下是一个示例。

示例

IF SQLWARN3 = ‘W’
   PERFORM X00-ABEND-SECTION
ELSE
   PERFORM A100-SELECT-RESULT
END-IF
猜你喜欢