为了测试,我需要人为地创建一个慢速 SQL 语句。我已经设法在 Oracle/Java 上实现了这一点(详情如下),但在 T-SQL/VB.Net/SQLServer 中却难以实现。
这个想法是有一个简单地休眠几(比如5)秒并返回一个虚拟值的函数。
我已经尝试(作为替代)使用“waitfor”T-SQL,但这在 FUNCTIONS 中是不允许的(显然是副作用);所以我在想(除了创建巨大的表,或者旋转嵌套的空循环)最好的方法是通过 CLR 对象......
有人可以提供一些简单的步骤来实现这一点吗?
这是我在 Oracle 中遵循的步骤: 首先创建一个 Java 类来进行睡眠:
package com.monojohnny;
public class sleepy {
public static String sleep() {
int seconds=5;
try {
Thread.sleep(seconds * 1000);
}
catch(Exception e) { ; }
return "Finished Sleeping for "+Integer.toString(seconds)+" seconds.";
}
}
其次,编译它,类似于:
javac -source 1.4 -target 1.4 com/monojohnny/sleepy.java
第三,将生成的 .class 文件加载到 Oracle DB 中:
call loadjava -user %username%/%password% com\monojohnny\sleepy.class
最后,创建一个 PL/SQL 函数来调用类的方法:
CREATE OR REPLACE FUNCTION sleepy RETURN VARCHAR2
AS LANGUAGE JAVA
NAME 'com.monojohnny.sleepy.sleep() return java.lang.String';
/
show errors
quit;
这是测试功能的结果:
SQL> select sleepy from dual;
Finished Sleeping for 5 seconds