2011-04-19 98 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