DBMS_RANDOM 包

为提高oracle向dm移植的兼容性。实现随机产生INT类型、NUMBER类型数,随机字符串,以及符合正态分布的随机数。支持oracle的dbms_random系统包。

15.1 相关方法

  1. INITIALIZE

初始化随机种子。接收INT类型参数,将rand()种子设为输入的参数。

语法如下:

PROCEDURE INITIALIZE(

	VAL IN INT

);
  1. SEED

重置随机种子。接收INT类型参数,将rand()种子设为输入的参数。

语法如下:

PROCEDURE SEED(

	VAL IN INT

);

重置随机种子。接收VARCHAR类型参数,通过转换成INT类型再将rand()种子设为输入的参数转换好的值。

语法如下:

PROCEDURE SEED(

	VAL IN VARCHAR2

);
  1. TERMINATE

ORACLE中不开放的功能,在此只做语法支持,无意义。

语法如下:

PROCEDURE TERMINATE;
  1. 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。
  1. value

生成大于LOW,小于HIGH的NUMBER行随机数。

语法如下:

FUNCTION VALUE (

	LOW IN NUMBER DEFAULT 0,

	HIGH IN NUMBER DEFAULT 1

)RETURN NUMBER;

参数详解

  • LOW、HIGH

都为NUMBER类型,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
微信扫码
分享文档
扫一扫
联系客服