Oracle SQL select语句,其中;睡觉;?纯SQL?

Oracle SQL select语句,其中;睡觉;?纯SQL?,sql,oracle,Sql,Oracle,我用“groovysql”(=javajdbc包装器)编写了一个通用的sqlselect语句执行器。它有一个超时功能 要在自动集成测试中测试超时特性,我想发出一个SQL选择命令,如 SELECT sleep(10) from DUAL; 它应该运行10秒,然后返回。就像MySql一样 Oracle中是否也有类似的东西来模拟“长时间运行”的查询?我想要一个简单的SQL查询,不需要任何PL/SQL或讨论中的特殊授权。使用dbms\u lock.sleep() 如果将整个PL/SQL块作为单个字符串

我用“groovysql”(=javajdbc包装器)编写了一个通用的sqlselect语句执行器。它有一个超时功能

要在自动集成测试中测试超时特性,我想发出一个SQL选择命令,如

SELECT sleep(10) from DUAL;
它应该运行10秒,然后返回。就像MySql一样

Oracle中是否也有类似的东西来模拟“长时间运行”的查询?我想要一个简单的SQL查询,不需要任何PL/SQL或讨论中的特殊授权。

使用
dbms\u lock.sleep()

如果将整个PL/SQL块作为单个字符串传递,则可以执行JDBC:

String sleep = "begin dbms_lock.sleep(10); end;";
Statement stmt = connection.createStatement();
stmt.execute(sleep);


但是,这确实调用了PL/SQL过程,因此它实际上不符合“没有存储函数”的条件。

只有当他可以授予对
dbms\u lock
dbms\u lock的访问权限时,这才起作用。sleep
过程不是函数,所以不能像这样从SQL中使用它。@Husqvik:对。我总是忘了我没有dbms_lock的授权:-(.难道没有什么“纯sql”的东西吗?@a_horse_和_no_名字,“begin dbms_lock.sleep(10);end;”是SQL吗?我能想到一件可怕的事情:尝试找到一个触发灾难性回溯的正则表达式,并将其用于类似于的
REGEXP\u中。你将无法调节超时,如果你成功了,你的DBA会恨你,但它只会是SQL…非常难看但非常酷的想法@Jeroenmoster!请不要使用它不过,在生产系统上运行时。由此产生的CPU峰值不会很好。(我假设Oracle有一种解决失控线程的方法,但我没有经验。)当然,@jeroenmoster。我会在测试实例上发布它,并在1秒后中止该语句。有趣的是,Oracle是否能够在内部真正杀死线程(中断)缓慢的正则表达式。
String sleep = "begin dbms_lock.sleep(10); end;";
Statement stmt = connection.createStatement();
stmt.execute(sleep);