DBMS_RANDOM包提供了可以产生随机值的方法。

下表列出了DBMS_RANDOM包中可以使用的函数及存储过程。

表 1. DBMS_RANDOM 函数/存储过程
函数/存储过程 返回类型 描述
INITIALIZE(val) N/A 使用指定的种子值初始化DBMS_RANDOM随机包。已弃用,但支持向后兼容。
NORMAL() NUMBER 返回一个NUMBER类型的随机数。
RANDOM INTEGER 返回的是一个INTEGER类型的随机数,它大于或等于-2 A31且小于2 A31。已弃用,但支持向后兼容。
SEED(val) N/A 用一个字符串值重置DBMS_RANDOM包种子值。
STRING(opt, len) VARCHAR2 返回的是用户指定形式的一个随机VARCHAR2字符串。
TERMINATE N/A 用于终止包。已弃用,但支持向后兼容。
VALUE NUMBER 返回一个NUMBER类型的随机值。返回的随机值大于或等于0且小于1,数字精度为38。
VALUE(low, high) NUMBER 返回一个介于指定边界之间的NUMBER类型的随机值。

INITIALIZE

INITIALIZE存储过程使用一个指定的种子值初始化DBMS_RANDOM包。语法如下:
INITIALIZE(val IN INTEGER)
参数
参数名称 描述
val DBMS_RANDOM包使用的种子值。
示例
下列代码段调用INITIALIZE存储过程,使用种子值6475对DBMS_RANDOM包进行初始化。
DBMS_RANDOM.INITIALIZE(6475);

NORMAL

NORMAL函数返回一个NUMBER类型的随机数。语法如下:
result NUMBER NORMAL()
返回参数
参数名称 描述
result 一个NUMBER类型的随机数。
示例
x:= DBMS_RANDOM.NORMAL();

RANDOM

RANDOM函数返回的是一个INTEGER类型的随机数,它大于或等于-2 A31且小于2 A31。语法如下:
result INTEGER RANDOM()
返回参数
参数名称 描述
result 一个INTEGER类型的随机数。
示例
x := DBMS_RANDOM.RANDOM();

SEED

通过SEED存储过程的第二种形式,您可以使用一个字符串值重置DBMS_RANDOM包种子值。语法如下:
SEED(val IN VARCHAR2)
参数
参数名称 描述
val DBMS_RANDOM包算法使用的种子值。
示例
下列代码段调用SEED存储过程,调用时将种子值设为abc123:
DBMS_RANDOM.SEED('abc123');

STRING

STRING函数返回的是用户指定形式的一个随机VARCHAR2字符串。语法如下:
result VARCHAR2 STRING(opt IN CHAR, len IN NUMBER)
参数
参数名称 描述
opt 返回的字符串的格式化选项。可选项如下:
  • u或U:大写字母字符串。
  • l或L:小写字母字符串。
  • a或A:混合大小写字符串。
  • x或X:大写字母数字字符串。
  • p或P:任意可打印字符。
len 返回的字符串长度。
返回参数
参数名称 描述
result 返回的一个VARCHAR2类型的随机字符串。
示例
下列代码段调用STRING函数。返回的是一个随机字母数字式的字符串,长度为10个字符。
x := DBMS_RANDOM.STRING('X', 10);

TERMINATE

TERMINATE 存储过程用于终止包。语法如下:
TERMINATE

VALUE

VALUE函数返回的是一个NUMBER类型的随机值。返回的随机值大于或等于0且小于1,数字精度为38。或者返回一个介于指定边界之间的NUMBER类型的随机值。VALUE函数有两种形式,语法为:
result NUMBER VALUE();
result NUMBER VALUE(low IN NUMBER, high IN NUMBER);
参数
参数名称 描述
low 指定随机值的下边界。这个随机值可能等于low
high 指定随机值的上边界。这个随机值将会小于high
返回参数
参数名称 描述
result 一个NUMBER类型的随机值。
示例
x := DBMS_RANDOM.VALUE();
x := DBMS_RANDOM.VALUE(1, 100);