#DBMS_RANDOM

DBMS_RANDOM包提供了一组内置的存储过程/函数,主要用于生成随机数字与字符。

# INITIALIZE

用一个种子值来初始化DBMS_RANDOM包。

示例

DBMS_RANDOM.INITIALIZE(
   seed IN INTEGER);

示例

BEGIN
DBMS_RANDOM.INITIALIZE(100);
END;
/

# NORMAL

返回服从正态分布的随机数,无参数,'()'可省略。

DBMS_RANDOM.NORMAL();

示例

SELECT DBMS_RANDOM.NORMAL FROM dual;
DBMS_RANDOM.NORMAL 
------------------ 
        -1.9243543

# RANDOM

返回随机数,无参数,'()'可省略。

DBMS_RANDOM.RANDOM();

示例

BEGIN
DBMS_RANDOM.INITIALIZE(100);
FOR i IN 1 .. 5 LOOP
 DBMS_OUTPUT.PUT_LINE(DBMS_RANDOM.RANDOM); 
END LOOP;
END;
/
--result
592679413
2139893194
61410547
1016237248
628080577

# SEED

重置种子值。

DBMS_RANDOM.SEED(
  seed IN INTEGER);

示例

BEGIN
DBMS_RANDOM.SEED('15');
END;
/

# STRING

随机生成字符串。

DBMS_RANDOM.STRING(
    opt  IN  CHAR,
    len  IN  NUMBER);
参数 描述
opt 字符串格式:
* 'x','X':返回包括数字与大写字母的字符串
* 'u','U':返回只有大写字母的字符串
* 'l','L':返回只有小写字母的字符串
* 'a','A':返回包括大小写字母的字符串
* 'p','P':返回任一ASCII码字符
len 字符串长度

示例

SELECT DBMS_RANDOM.STRING('l',10) value FROM dual;
VALUE                                                            
---------------------------------------------------------------- 
elwtenyjkj 

SELECT DBMS_RANDOM.STRING('p',10) value FROM dual;
VALUE                                                            
---------------------------------------------------------------- 
g)6*gN/?Yl 

# VALUE

生成一个指定范围的38位随机小数(小数点后38位),参数可省略,表示不指定范围,则生成范围为[0,1)的38位随机数。

DBMS_RANDOM.VALUE (
   low IN NUMBER,
   high IN NUMBER);

示例

SET num 40;
SELECT DBMS_RANDOM.VALUE FROM dual;
                        DBMS_RANDOM.VALUE 
----------------------------------------- 
  .87566195239211943754742840247867358906

SELECT DBMS_RANDOM.VALUE(1,10) FROM dual;
                     DBMS_RANDOM.VALUE(1, 
----------------------------------------- 
  5.6740327609409654422060040389667274521
pdf-btn 下载文档
copy-btn 复制链接