Db2 RPGLE:未成功读取是否会解锁以前锁定的记录?
我的问题是: 我有一个循环中的READE 在这个循环中,我可以根据条件更新记录或不更新记录 在这种情况下: 我已经刷新了序列的最后一条记录,它被锁定了 它不满足条件,因此未更新,因此未解锁 程序试图读取下一条记录,但没有成功,但是 我的问题是:Db2 RPGLE:未成功读取是否会解锁以前锁定的记录?,db2,locking,ibm-midrange,rpgle,Db2,Locking,Ibm Midrange,Rpgle,我的问题是: 我有一个循环中的READE 在这个循环中,我可以根据条件更新记录或不更新记录 在这种情况下: 我已经刷新了序列的最后一条记录,它被锁定了 它不满足条件,因此未更新,因此未解锁 程序试图读取下一条记录,但没有成功,但是 我的问题是: 它是否释放了另一条记录的锁?否。用于释放您的记录。否。用于释放您的记录。事实上,是的,在读取失败后,该记录被解锁。。。 我几乎没有时间为此创建一个肮脏的测试:程序 Fp1facll1 UF E k DISK
它是否释放了另一条记录的锁?否。用于释放您的记录。否。用于释放您的记录。事实上,是的,在读取失败后,该记录被解锁。。。 我几乎没有时间为此创建一个肮脏的测试:程序
Fp1facll1 UF E k DISK
D*
Dexcmd s 250 inz('DLYJOB DLY(10)')
Dexlg s 15P 5 inz(250)
C*
C move 'F012' adqtc4
C adqtc4 setll p1facll1
C adqtc4 reade p1facll1 58
C *in58 downe '1'
C* Update never occurs
C if '0'
C update MEFRESM
C endif
C adqtc4 reade p1facll1 58
C enddo
C* Wait indefinitively
C dow '1'
C call 'QCMDEXC'
C parm excmd
C parm exlg
C enddo
C SETON LR
首次发布(由SBMJOB发布)
进入无限等待循环(正常)。
在没有结束程序的情况下,我第二次启动它,结束它进入无限循环,证明第一个没有锁定最后一条记录,它成功地变为红色,否则它应该有一个读取错误。事实上是的,在读取失败后,记录被解锁。。。 我几乎没有时间为此创建一个肮脏的测试:程序
Fp1facll1 UF E k DISK
D*
Dexcmd s 250 inz('DLYJOB DLY(10)')
Dexlg s 15P 5 inz(250)
C*
C move 'F012' adqtc4
C adqtc4 setll p1facll1
C adqtc4 reade p1facll1 58
C *in58 downe '1'
C* Update never occurs
C if '0'
C update MEFRESM
C endif
C adqtc4 reade p1facll1 58
C enddo
C* Wait indefinitively
C dow '1'
C call 'QCMDEXC'
C parm excmd
C parm exlg
C enddo
C SETON LR
首次发布(由SBMJOB发布)
进入无限等待循环(正常)。
在没有结束程序的情况下,我第二次启动了它,结束它进入无限循环,证明第一次没有锁定最后一条记录,它成功地变红了,否则它应该有一个读取错误我想相信是这样的,但是在文件上使用解锁操作码的目的是什么?在什么情况下,它会将记录保持为锁定状态?如果我只读取一条记录而不进行更新,则将使用解锁来释放该记录(如果程序仍处于活动状态)。在这种情况下,程序试图读取另一条记录,因此它解锁了另一条记录(可能是在读取之前),我想这是真的,但在文件上使用解锁操作码的目的是什么?在什么情况下,它会将记录保持为锁定状态?如果我只读取一条记录而不进行更新,则将使用解锁来释放该记录(如果程序仍处于活动状态)。在这种情况下,程序试图读取另一条记录,因此它解锁了另一条记录(可能是在读取之前)