如果我使用FOR UPDATE子句,如何解锁行

时间:2012-10-31 05:20:23

标签: stored-procedures plsql oracle10g oracle11g plsqldeveloper

在程序中,如果我们使用FOR UPDATE子句,它将锁定特定行并且只允许一个客户端更新,而其他客户端只能在那时获取同一行中的数据。

我的问题是它什么时候解锁行,在编写程序时我们应该怎么做才能解锁行? 以这个例子为例,我在client_count中使用FOR UPDATE子句,当它解锁此过程中的特定行时。

create or replace PROCEDURE newprocedur(inMerid IN VARCHAR2,outCount OUT NUMBER) AS 
CURSOR c1 IS 
  select CLIENT_COUNT 
    from OP_TMER_CONF_PARENT 
   where MER_ID = inMerid 
   FOR UPDATE OF CLIENT_COUNT;
BEGIN
  Open c1;
  loop
    fetch c1 into outCount;
    exit when c1%NOTFOUND;
    outCount:=outCount+1;
    update OP_TMER_CONF_PARENT 
       set CLIENT_COUNT = outCount 
     where current of c1;
  end loop;
  close c1;
END;

1 个答案:

答案 0 :(得分:2)

更新后的行将在提交后解锁。