各種 DB2 資料型別對應的 COBOL 主機變數是什麼?


問題:當 COBOL-DB2 程式中主機變數與 SELECT 語句中的列數不匹配時,程式會如何執行?

解決方案

如果列數和主機變數數不匹配,查詢將失敗。例如,如果我們在處理 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

更新於:2020年12月1日

818 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告