Soalan: Program COBOL-DB2 telah ditukar untuk menambah panjang pembolehubah daripada PIC X(5) kepada PIC X(8). Walau bagaimanapun, tiada perubahan pada SQL program. Apakah yang akan berlaku jika rancangan/pakej program tidak terikat untuk perubahan ini?
Perubahan panjang berubah dari PIC X(5) kepada PIC X(8) bukanlah perubahan DB2 dan pernyataan SQL dalam atur cara tidak perlu diubah suai. Walau bagaimanapun, kami masih perlu mengikat pelan/pakejnya, jika tidak, kami akan menerima kod ralat SQL -818 yang menyatakan "cap masa x yang dijana oleh prapenyusun dalam modul yang dimuatkan adalah berbeza daripada cap masa mengikat y yang dibina daripada DBRM z ". p>
Sebab ralat SQL ini adalah seperti berikut - Pada setiap pelaksanaan program COBOL-DB2, cap waktu modul dan pakej/DBRM yang dimuatkan dibandingkan. Jika panjang pembolehubah berubah dalam program (dan tiada perubahan SQL) dan disusun, maka modul yang dimuatkan akan mempunyai cap masa yang baru dijana, sebaliknya jika BIND tidak dilaksanakan, modul yang dimuatkan akan mempunyai cap masa yang baru dijana . Pakej/DBRM akan mempunyai cap masa lama. Apabila program dilaksanakan, langkah JCL yang memanggil program gagal dengan kod ralat SQL -818.
Jika kami mempunyai program COBOL-DB2 yang pernyataan SQLnya tidak akan berubah pada masa hadapan, kami boleh menyusun atur cara menggunakan LEVEL pilihan. Berikut adalah contoh langkah BIND menggunakan pilihan LEVEL.
//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) /*
Atas ialah kandungan terperinci Apakah hasil pelaksanaan apabila perubahan bukan SQL dibuat dalam program tanpa BIND?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!