【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程序员面试笔试宝典》,作者:李华荣。