在Oracle中,如何判断一个存储过程是否正在运行?
答案部分
有两种方式可以判断一个存储过程是否正在运行,其查询SQL语句分别如下所示,若有结果返回,则说明存储过程正在运行。
方法1:
SELECT A.SID,
B.SERIAL#,
A.OWNER,
A.OBJECT,
A.TYPE,
B.SERVER,
B.MODULE,
B.ACTION,
B.LOGON_TIME
FROM V$ACCESS A,
V$SESSION B
WHERE A.SID = B.SID(+)
AND A.TYPE = 'PROCEDURE'
AND B.STATUS = 'ACTIVE'
AND A.OBJECT = 'P_TEST_LHR' --注意这里修改成存储过程的名称
;
方法2:
SELECT *
FROM V$DB_OBJECT_CACHE
WHERE TYPE = 'PROCEDURE'
AND NAME = 'P_TEST_LHR'
AND LOCKS > 0
AND PINS > 0;
本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。