問題:COBOL-DB2 程序已更改,以將變量的長度從 PIC X(5) 增加到 PIC X(8)。但是,程序的 SQL 沒有任何變化。如果程序的計劃/包沒有針對這些更改進行綁定,結果會怎樣?
解決方案
從 PIC X(5) 到 PIC X(8) 的可變長度更改為不是 DB2 更改,并且程序中的 SQL 語句不需要修改。但是,我們仍然需要綁定其計劃/包,否則我們將收到 SQL 錯誤代碼 -818,其中指出“加載模塊中的預編譯器生成的時間戳 x 與從 DBRM z 構建的綁定時間戳 y 不同”。 p>
此 SQL 錯誤的原因如下 – 在每次執行 COBOL-DB2 程序時,都會比較加載模塊和包/DBRM 的時間戳。如果程序中變量的長度發生了變化(并且沒有 SQL 變化)并且被編譯,那么加載模塊將具有新生成的時間戳,另一方面,如果不執行 BIND,則加載模塊將具有新生成的時間戳。包/DBRM 將具有舊的時間戳。當執行該程序時,調用該程序的 JCL 步驟將失敗,并顯示 SQL 錯誤代碼 -818。
如果我們有一個 COBOL-DB2 程序,其 SQL 語句將來永遠不會更改,我們可以使用選項 LEVEL 預編譯該程序。下面是使用 LEVEL 選項的 BIND 步驟的示例。
示例
//BIND EXEC PGM=IKJEFT01 //STEPLIB DD DSN=DIS.TEST.LOADLIB,DISP=SHR //SYSOUT DD SYSOUT=* //SYSTSIN DD * DSN SYSTEM(TB3) BIND PLAN(PLANA) - PKLIST(PACKA) - LEVEL - ACQUIRE(ALLOCATE) - ISOLATION (RS) /*
登錄后復制
以上就是在沒有BIND的情況下,程序中進行非SQL更改時,執行結果是什么?的詳細內容,更多請關注www.92cms.cn其它相關文章!