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);