为提高 oracle 向 dm 移植的兼容性。实现随机产生 INT 类型、NUMBER 类型数,随机字符串,以及符合正态分布的随机数。支持 oracle 的 dbms_random 系统包。
15.1 相关方法
- INITIALIZE
初始化随机种子。接收 INT 类型参数,将 rand()种子设为输入的参数。
语法如下:
PROCEDURE INITIALIZE(
VAL IN INT
);
- SEED
重置随机种子。接收 INT 类型参数,将 rand()种子设为输入的参数。
语法如下:
PROCEDURE SEED(
VAL IN INT
);
重置随机种子。接收 VARCHAR 类型参数,通过转换成 INT 类型再将 rand()种子设为输入的参数转换好的值。
语法如下:
PROCEDURE SEED(
VAL IN VARCHAR2
);
- TERMINATE
ORACLE 中不开放的功能,在此只做语法支持,无意义。
语法如下:
PROCEDURE TERMINATE;
- RANDOM_NORMAL/ RANDOM/ RANDOM_STRING 或 STRING
产生符合正态分布的随机数。
语法如下:
FUNCTION RANDOM_NORMAL RETURN NUMBER;
产生 INT 类型随机数。
语法如下:
FUNCTION RANDOM RETURN INTEGER;
生成随机字符串。
语法如下:
FUNCTION RANDOM_STRING (
OPT IN CHAR,
LEN IN NUMBER
)RETURN VARCHAR2;
FUNCTION STRING (
OPT IN CHAR,
LEN IN NUMBER
)RETURN VARCHAR2;
参数详解
-
OPT
CHAR 类型,表示字符串模式,模式解释如下:
'u', 'U':只产生随机的大写字母字符串;
'l', 'L':只产生随机的小写字母字符串;
'a', 'A':产生大小写混合的字母字符串;
'x', 'X':返回大写字母和数字随机字符串;
'p', 'P':返回随机可打印字符字符串。
当模式字符不是上述给定的字符时,系统会为按'U'的方式处理。
-
LEN
表示生成字符串的长度,最大为 32767,单位为字节。若超过 32767,则置为 32767。
- value
生成一个指定范围内的随机数。
语法如下:
FUNCTION VALUE (
LOW IN NUMBER DEFAULT 0,
HIGH IN NUMBER DEFAULT 1
)RETURN NUMBER;
参数详解
-
LOW、HIGH
指定随机数的范围区间。当 LOW 小于等于 HIGH 时,生成大于等于 LOW 小于等于 HIGH 的随机数;当 LOW 大于 HIGH 时,生成大于等于 HIGH 小于等于 LOW 的随机数。
15.2 举例说明
使用包内的过程和函数之前,如果还未创建过系统包,请先调用系统过程创建系统包。
SP_CREATE_SYSTEM_PACKAGES (1,'DBMS_RANDOM');
例 1 初始化随机种子。
CALL DBMS_RANDOM.INITIALIZE(15);
例 2 返回大于等于 10 小于 100 的 NUMBER 类型随机数。
select DBMS_RANDOM.VALUE(10,100);
结果如下:
10.112613