句を使用する手順FOR UPDATE
では、特定の行をロックし、1 つのクライアントのみを更新できるようにしますが、他のクライアントはその時点で同じ行のデータしかフェッチできません。
私の質問は、いつ行のロックを解除するかということです。手順を書いているときに行のロックを解除するにはどうすればよいですか? ここでこの例を取り上げFOR UPDATE
ます。この手順で特定の行のロックを解除するときに、client_count の句を使用しています。
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;