DBMS_RANDOM包提供了许多方法以产生随机值。下列表中列出了DBMS_RANDOM包中可使用的存储过程及函数。

表 1. DBMS RANDOM Functions/Procedures
Function/Procedure Return Type Description
INITIALIZE(val) n/a Initializes the DBMS RANDOM package with the specified seed value. Deprecated, but supported for backward compatibility.
NORMAL() NUMBER Returns a random NUMBER.
RANDOM INTEGER Returns a random INTEGER with a value greater than or equal to -2A31 and less than 2A31. Deprecated, but supported for backward compatibility.
SEED(val) n/a Resets the seed with the specified value.
SEED(val) n/a Resets the seed with the specified value.
STRING(opt, len) VARCHAR2 Returns a random string.
TERMINATE n/a TERMINATE has no effect. Deprecated, but supported for backward compatibility.
VALUE NUMBER Returns a random number with a value greater than or equal to 0 and less than 1, with 38 digit precision.
VALUE(low, high) NUMBER Returns a random number with a value greater than or equal to low and less than high.

INITIALIZE

INITIALIZE存储过程用一个种子值来初始化DBMS_RANDOM包。语法如下:
INITIALIZE(val IN INTEGER)

但一般情况下并不建议使用INITIALIZE存储过程,它仅用于向下兼容。

参数

参数名称 描述
val val 是一个由DBMS_RANDOM 包算法使用的种子值。

示例

下列代码段演示了对INITIALIZE 存储过程的调用,这个存储过程用种子值64 75对DBMS_RANDOM包进行初始化。

DBMS_RANDOM.INITIALIZE(6475);

NORMAL

NORMAL函数返回的是类型NUMBER的一个随机数。语法如下:

result NUMBER NORMAL()

参数

表 2.
参数名称 描述
result result 是类型NUMBER 的一个随机值。

示例

下列代码段演示了对NORMAL 函数的调用:

x:= DBMS_RANDOM.NORMAL();

RANDOM

RANDOM函数返回的是一个随机INTEGER值,它大于或等于-2 A31且小于2 A31。语法如下:

result INTEGER RANDOM()

但一般情况下并不建议使用RANDOM函数,它仅用于向下兼容。

参数

表 3.
参数名称 描述
result result 是类型INTEGER的一个随机值。

示例

下列代码段演示了对RANDOM函数的调用。调用后返回的是一个随机数:

x := DBMS_RANDOM.RANDOM();

SEED

通过SEED存储过程的第二种形式,我们可以用一个字符串值给DBMS_RANDOM包重置种子值。语法如下:

SEED(val IN VARCHAR2)

参数

参数名称 描述
val val是由DBMS_RANDOM 包算法使用的种子值。

示例

下列代码段演示了对SEED存储过程的调用,调用时将种子值设为abc123。

DBMS_RANDOM.SEED('abc123');

STRING

STRING函数返回的是一个用户指定形式的随机VARCHAR2字符串。语法如下:

result VARCHAR2 STRING(opt IN CHAR, len IN NUMBER)

参数

Opt:给返回的字符串的格式化选项。 option也许为:
Option Specifies Formatting Option
u or U Uppercase alpha string
l or L Lowercase alpha string
a or A Mixed case string
x or X Uppercase alpha-numeric string
p or P Any printable characters

len:返回的字符串长度。

result:result 是类型VARCHAR2的一个随机值。

示例

下列代码段演示了对STRING函数的调用。调用后返回的是一个随机字母数字式的字符串,长度为10个字符。

x := DBMS_RANDOM.STRING('X', 10);

TERMINATE

TERMINATE 存储过程不会造成任何影响。语法如下:

TERMINATE

但一般情况下并不建议使用TERMINATE存储过程,它仅支持于兼容性。

VALUE

VALUE函数返回的是一个随机NUMBER,大于或等于0且小于1,数字精度为38。VALUE函数有两种形式,第一种形式的语法为:

result NUMBER VALUE()

参数

参数名称 描述
result result 是类型NUMBER 的一个随机值。

示例

下列代码段演示了对VALUE函数的调用。调用后返回的是一个随机NUMBER:

x := DBMS_RANDOM.VALUE();

VALUE

VALUE函数返回的是一个介于用户指定边界之间的随机NUMBER值。VALUE函数有两种形式。第二种形式的语法如下:

result NUMBER VALUE(low IN NUMBER, high IN NUMBER)

参数

参数名称 描述
low low 用于指定随机值的下边界。这个随机值可能等于low 。
high high 用于指定随机值的上边界。这个随机值将会小于high 。
result result是类型NUMBER 的一个随机值。

示例

下列代码段演示了对VALUE函数的调用。调用后返回的是一个随机NUMBER值,大于或等于1且小于100。

x := DBMS_RANDOM.VALUE(1, 100);