立即注册 登录
度量快速开发平台-专业、快速的软件定制快开平台 返回首页

王爱东的个人空间 http://bbs.delit.cn/?3 [收藏] [复制] [RSS]

日志

度量快速开发平台中的数据并发处理方法

已有 1221 次阅读2020-6-13 11:14 |个人分类:构建综合|系统分类:构建综合

    在度量快速开发平台中,有些界面可能需要对数据实时要求较高。例如系统内有一个商品销售功能,各个销售点需要对商品进行销售,在各个点进行抢购的时候,就需要考虑并发性,避免抢购的瞬间出现重复购买。
    实现思路:
    直接利用数据库的锁定功能实现,如果涉及到多个表或者数据的更新,可以采用存储过程实现。

    下面是一个存储过程示例及调用这个存储过程的方法:

    1、存储过程代码:

create or replace procedure TRANSTESTTT(IN_ARTCODE in varchar2,
                                        RETURNSTR  out varchar2) is
  l_value number(2) := 0;
begin
  select status into l_value from  TRANSTEST where namex = IN_ARTCODE for update nowait;
  if l_value = 1 then
    update  TRANSTEST
       set status = 3, sdate = sysdate, ccount = ccount + 1
     where namex = IN_ARTCODE;
  else
  RETURNSTR := '已经被处理!';
  return;
  end if;
  dbms_lock.sleep(10);
  commit;
  RETURNSTR := '操作成功!';
exception
  WHEN OTHERS THEN
    RETURNSTR := '其他人正在操作!';
end TRANSTESTTT;


2、开发平台代码:


'调用存储过程,注意存储过程名称字符大小写问题
dim sp=CreateProcedure("default","TRANSTESTTT")
'传入存储过程参数(类型与值)
sp.AddInputParam("IN_ARTCODE",22,"AAA")
'定义传出参数(类型与长度)
sp.AddOutputParam("RETURNSTR",22,1000)

'Execute 执行存储过程,传入参数指示是否提交事务(True表示提交事务,)
sp.Execute(false)
'获取传出参数
dim outvalue =sp.GetOutPraramValue("RETURNSTR")
showmessage(outvalue)


如果开发平台中的这个功能是一个按钮,这样,在各个销售点销售的时候,即使多个人同时点击该功能按钮,也能控制只能一个人能购买成功。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-4-16 23:02 , Processed in 0.077769 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

返回顶部