Oracle8i数据库的一个重要特点是在数据库引擎中包含了JVM。该功能使得用户可以在数据库中以与PLSQL代码平等的地位运行Java代码。Java的简单性和可移植性不仅使Oracle可以很好的工作在网络上,而且也大大扩展了PLSQL语言的能力。
例如,在较早版本的Oracle的标准内置包中,还没有提供DBMS_RANDOM包。我们可以借助于Java,以简便的方法获得随机数:
首先,创建一个Java源对象,其中包含一个产生随机数的方法(注意Java语言对字母大小写是完全敏感的)
CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED js_rand AS
public class clsRand{
public static double Rand(){
return java.lang.Math.random();
}
};
把Java代码装入数据库后,还不能马上就执行这些代码。在PLSQL中执行一个Java成员方法之前,还必须创建一个对应的函数发布该成员方法的程序代码(编译源程序为字节码)
CREATE OR REPLACE FUNCTION js_rand RETURN NUMBER AS
LANGUAGE JAVA NAME 'clsRand.Rand() return double';
现在,我们就可以在PLSQL中调用这个随机函数了
BEGIN
--获得0~1之间的随机浮点数
dbms_output.put_line(js_rand);
--获得1~100之间的随机整数
dbms_output.put_line(ceil(js_rand * 100));
END;