首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Progress4gl怎么锁自己?

Progress4gl怎么锁自己?
EN

Stack Overflow用户
提问于 2020-06-11 18:46:45
回答 1查看 99关注 0票数 2

在单元测试中,我需要验证程序在处理表时是否跳过锁定记录。我一直无法建立一个锁定的记录,因为测试无法锁定自己,这很有意义。

这是我想要达到的目标的一个例子。

代码语言:javascript
运行
复制
  DEV VAR v_isCommitted        AS LOGI NO-UNDO.
  DEF VAR hl                   AS HANDLE   NO-UNDO.
  DEF BUFFER bufl              FOR tablename. 
  hl = BUFFER bufl:HANDLE. 

  LOCKED_RECORDS:
  DO TRANSACTION ON ERROR UNDO, LEAVE LOCKED_RECORDS:
      /*Setup : Create record not committed yet*/
      CREATE tablename.
      ASSIGN tablename.fields = fieldsvalue.



      /*ACT :  Code I'm trying to test*/   
      /*...some code...*/  
      v_isCommitted = hl:FIND-BY-ROWID(ROWID(tablename), EXCLUSIVE-LOCK, NO-WAIT)
                                AND AVAILABLE(bufl) 
                                AND NOT LOCKED(bufl).
      /*...some code touching the record if it is commited...*/   

      /*ASSERT :  program left new record tablename AS IS.*/

  END.

问题是记录是可用的,没有锁定到测试,因为它是由它创建的。

有什么方法可以让测试锁定自己的记录,这样表演部分就可以跳过记录,就像它是由别人创建的一样吗?

进展: 11.7.1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-11 18:59:19

会话本身无法锁定。所以你需要开始第二次会议。例如:

代码语言:javascript
运行
复制
/* code to set things up ... */

/* spawn a sub process to try to lock the record */

os-command silent value( substitute( '_progres -b -db &1 -p lockit.p -param "&2" && > logfile 2>&&1', dbname, "key" )).

在lockit.p中,使用会话:参数获取要测试记录的键(或者我认为是硬代码)。

或者,如以下评论所述:

代码语言:javascript
运行
复制
/* locktest.p
 */

define variable lockStatus as character no-undo format "x(20)".

find first customer exclusive-lock.

input through value( "_progres /data/sports120/sports120 -b -p ./lockit.p" ).
repeat:
  import unformatted lockStatus.
end.

display lockStatus.

以及:

代码语言:javascript
运行
复制
/* lockit.p
 */

find first customer exclusive-lock no-wait no-error.
if locked( customer ) then
  put "locked".
 else
  put "not locked".

quit.
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62331400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档