SQL 执行期间 COBOL-DB2 程序中表级锁的实现
DB2中的锁是在表和表空间上获取的,以避免由于LOSTUPDATE、DIRTYREAD和PHANTOM引起的问题。
我们需要在BIND包/计划步骤期间使用ACQUIRE选项定义锁定参数。
一个COBOL-DB2程序PROGA正在使用SQL语句来访问表TA。如果我们只在程序中执行特定的SQL语句时才需要在表上加锁,那么我们需要定义BINDJCL步骤如下:
//BINDEXECPGM=IKJEFT01 //STEPLIBDDDSN=DIS.TEST.LOADLIB,DISP=SHR //系统输出DD系统输出=* //SYSTSINDD* DSN SYSTEM(TB3) BIND PLAN(PLANA) - PKLIST(PACKA) - ACQUIRE(USE) - /*
选项ACQUIRE必须与BINDPLAN步骤中的USE参数一起使用。当在程序中执行使用该表的SQL语句时,这将指示DB2将锁放在DB2表上。