最近在使用Oracle数据库完成一项任务时,需要保持住客户端的会话不断开,于是想到了PL/SQL语法中DBMS_SESSION.SLEEP() 程序包。事实上,在19.3.0的版本中,使用DBMS_SESSION.SLEEP()可以正常使用。如下:
SQL>select VERSION_FULL from v$instance;
VERSION_FULL
----------------------------------
19.3.0.0.0
SQL>begin
17:40:23 2 DBMS_SESSION.SLEEP(10);
17:40:40 3 end;
17:40:43 4 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:10.01
可以看到,整个过程执行消耗了10s。 然而,当我在11.2的版本中使用DBMS_SESSION.SLEEP()时,出现了 PLS-00302: component 'SLEEP' must be declared 的报错。
SQL> select VERSION from v$instance;
VERSION
----------------------------------
11.2.0.4.0
SQL> begin
2 DBMS_SESSION.SLEEP(10);
3 end;
4 /
DBMS_SESSION.SLEEP(10);
*
ERROR at line 2:
ORA-06550: line 2, column 17:
PLS-00302: component 'SLEEP' must be declared
ORA-06550: line 2, column 4:
PL/SQL: Statement ignored
尝试在11.2的版本中使用 DBMS_LOCK.SLEEP(),可以正常使用;
SQL> exec DBMS_LOCK.SLEEP(10)
PL/SQL procedure successfully completed.
所以很好奇,是否是11.2中的默认环境没有引入DBMS_SESSION
的程序包;如果需要在11.2的环境中使用,我需要做什么呢?求解!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。