使用游标抓取锁类型、模式、名称
范例一:
declare
v1 varchar(5);
cursor c1 is select type from v$lock where sid=142;
begin
open c1;
loop
fetch c1 into v1;
exit when c1%notfound;
insert into t4 values(v1);
commit;
end loop;
end;
范例二:抓取锁的类型
declare
v2 varchar(10);
cursor c2 is select DECODE(LK.TYPE,'TX','Transaction','TM','DML','UL','PL/SQL User Lock',LK.TYPE) from v$lock lk;
begin
open c2;
loop
fetch c2 into v2;
exit when c2%notfound;
insert into t4 values(v2);
commit;
end loop;
end;
范例三:抓取锁的模式
declare
v3 varchar(10);
cursor c3 is select DECODE(LK.LMODE,0,'None',1,'Null',2,'Row-S (SS)',3,'Row-X (SX)',4,'Share',5,'S/Row-X (SSX)',6,'Exclusive',TO_CHAR(LK.LMODE)) from v$lock lk;
begin
open c3;
loop
fetch c3 into v3;
exit when c3%notfound;
insert into t4 values(v3);
commit;
end loop;
end;
范例四:抓取请求锁的 类型
declare
v4 varchar(10);
cursor c4 is select DECODE(LK.REQUEST,0,'None',1,'Null',2,'Row-S (SS)',3,'Row-X (SX)',4,'Share',5,'S/Row-X (SSX)',6,'Exclusive') from v$lock lk;
begin
open c4;
loop
fetch c4 into v4;
exit when c4%notfound;
insert into t4 values(v4);
commit;
end loop;
end;
范例五:联合抓取被锁的对象、锁定的模式
declare
v3 varchar(10);
v4 number;
cursor c3 is select DECODE(LK.LMODE,0,'None',1,'Null',2,'Row-S (SS)',3,'Row-X (SX)',4,'Share',5,'S/Row-X (SSX)',6,'Exclusive',TO_CHAR(LK.LMODE)) from v$lock lk;
cursor c4 is select id1 from v$lock where sid=142;
begin
open c3;
open c4;
for i in 1..100000
loop
fetch c3 into v3;
fetch c4 into v4;
exit when c4%notfound;
insert into t4 values(v3,v4);
commit;
end loop;
end;