PHP共享冲突,Oracle技术网—在客户端处理Oracle的数据行加锁问题

STRING ls_goodscode

INTEGER li_stroe_qty

ls_goodscode = st.text

if len(ls_goodscode) = 17 then

DECLARE pstore_goods PROCEDURE FOR pd_store_goods(:ls_goodscode ) ;

// 从库存数中减去 2

execute pstore_goods;

if SQLCA.SLQCODE < 0 then

ROLLBACK ;

messagebox("系统提示", "数据操作有误,请稍候再试!",stopsign! ok!);

end if

else

messagebox("系统提示", "数据输入有误!",information!, ok!);

end if

//同时在当前的FROM WINDOW中的CLOSEQUERY中显示写明ROLLBACK ;

在服务器端

-- procedure pd_store_goods

create or replace procedure pd_store_goods ( ls_goodscode in varchar2 )

IS

ln_store_qty number(10) ;

begin

SELECT nvl(QTY, -1)

INTO ln_store_qty

FROM AMS.TAB_STORE_GOODS_INFO

WHERE GOODS_NO = SUBSTR(ls_goodscode , 1, 13)

AND SERIAL_NO = SUBSTR(ls_goodscode , 14, 4)

FOR UPDATE NOWAIT;

if ln_store_qty >= 2 then

UPDATE AMS.TAB_STORE_GOODS_INFO

SET QTY = ln_store_qty - 2

WHERE GOODS_NO = SUBSTR(ls_goodscode , 1, 13)

AND SERIAL_NO = SUBSTR(ls_goodscode , 14, 4);

COMMIT ;

else

ROLLBACK ;

RAISE_APPLICATION_ERROR(-200002, 'store not enougth!');

end if;

EXCEPTION

WHEN OTHERS THEN

RAISE_APPLICATION_ERROR(-200001, 'store not SCUESSCULL!');

end ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值