2011-04-19 123 views
2

我想测试名为pro1的过程的同步/异步调用。为此,我想在pro1中加锁。PLSQL中的等待/睡眠

DECLARE 
    t INTEGER; 
BEGIN 
    t := 60; 
    DBMS_LOCK.sleep(t); 
END; 
/

只是想确定,是否会等待/锁定同步呼叫?即我的proc1不会退出,直到锁定完成?

P.S: 虽然Proc1正在运行,但还有另一个过程。我想在有连接上的锁被Pro1的

+0

与包的名称可能暗示的不同,'DBMS_LOCK.sleep'并没有真正锁定任何东西。 – 2011-04-20 02:58:38

回答

1

DBMS_LOCK.sleep将把会话进程休眠,以测试它的执行,I-E:本次会议将持续60秒什么也不做。

我不确定你的意思是“锁定连接”。如果运行sleep过程的会话有任何锁定挂起,它们将在睡眠期间保留,其他会话可能会被其阻塞,必须等待第一个会话正常提交或回滚。

+0

没关系,在我们的应用程序中,有时间事件被称为***工作***。并且它在作业运行时发生,这需要时间并且同时,如果我们取消部署应用程序,它会得到数据库锁定的异常。我们想要做的是使用** DBMS_SCHEDULER.RUN_JOB('name',false)**异步调用***作业***。为了测试这个,我想运行一个简单的工作,并在其中调用睡眠,这样我需要时间。同时,我想看看undeployement是否停止 – 2011-04-19 16:52:44

+0

@alee:调用'sleep' proc的工作在睡眠时不会做任何事情。它也不会在睡眠结束之前返回,因此总的执行需要时间。 – 2011-04-19 17:10:20