DBMS_RANDOM包提供了许多方法以产生随机值。
下列表中列出了DBMS_RANDOM包中可使用的存储过程及函数。
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(val IN INTEGER)
但一般情况下并不建议使用INITIALIZE存储过程,它仅用于向下兼容。
参数
参数名称 | 描述 |
---|---|
val | val 是一个由DBMS_RANDOM 包算法使用的种子值。 |
示例
下列代码段演示了对INITIALIZE 存储过程的调用,这个存储过程用种子值64 75对DBMS_RANDOM包进行初始化。
DBMS_RANDOM.INITIALIZE(6475);
NORMAL
NORMAL函数返回的是类型NUMBER的一个随机数。语法如下:
result NUMBER NORMAL()
参数
参数名称 | 描述 |
---|---|
result | result 是类型NUMBER 的一个随机值。 |
示例
下列代码段演示了对NORMAL 函数的调用:
x:= DBMS_RANDOM.NORMAL();
RANDOM
RANDOM函数返回的是一个随机INTEGER值,它大于或等于-2 A31且小于2 A31。语法如下:
result INTEGER RANDOM()
但一般情况下并不建议使用RANDOM函数,它仅用于向下兼容。
参数
参数名称 | 描述 |
---|---|
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);