【DB筆試面試496】如何讓程式等待60秒鐘後繼續運行?
- 2019 年 10 月 8 日
- 筆記
♣
題目部分
在Oracle中,如何讓程式等待60秒鐘後繼續運行?
♣
答案部分
可以執行$ORACLE_HOME/rdbms/admin/dbmslock.sql來創建DBMS_LOCK包,該包可以實現讓程式暫時等待的功能。若想普通用戶使用該包,則需要在SYS用戶下執行「GRANT EXECUTE ON DBMS_LOCK TO USER_XXX;」命令,下面給出一個示例:
SYS@lhrdb> SET SERVEROUTPUT ON SYS@lhrdb> BEGIN 2 DBMS_OUTPUT.PUT_LINE(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS')); 3 DBMS_LOCK.SLEEP(60); 4 DBMS_OUTPUT.PUT_LINE(TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS')); 5 END; 6 / 20160822154330 20160822154430 PL/SQL procedure successfully completed.
由結果可以看出,程式剛好等待了1分鐘。
需要注意的是,從Oracle 18c(即12.2.0.2)開始,普通用戶也可以直接使用DBMS_SESSION.SLEEP來實現讓程式暫時等待的功能,而不用再單獨給普通用戶授予許可權了。
以下程式碼也可以讓會話暫時等待1分鐘:
SYS@lhrdb> EXEC DBMS_SESSION.SLEEP(60);
本文選自《Oracle程式設計師面試筆試寶典》,作者:李華榮。