开发者社区 > 数据库 > 正文

求解Oracle 11.2.0.4版本数据库DBMS_SESSION.SLEEP()用法

最近在使用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的环境中使用,我需要做什么呢?求解!

展开
收起
故乡听风吟 2023-06-14 17:49:25 137 0
0 条回答
写回答
取消 提交回答

数据库领域前沿技术分享与交流

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载

相关镜像