【DB笔试面试491】如何判断一个存储过程是否正在运行?
- 2019 年 10 月 11 日
- 筆記
在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程序员面试笔试宝典》,作者:李华荣。