各種 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
廣告