17:00:59 SQL> desc dbms_random;
Element Type
---------- ---------
SEED PROCEDURE
VALUE FUNCTION
NORMAL FUNCTION
STRING FUNCTION
INITIALIZE PROCEDURE
RANDOM FUNCTION
TERMINATE PROCEDURE
NUM_ARRAY TYPE
使用desc命令查看该过程的结构,其中我们需要用到的也就values 、normal、string、random这四个函数吧,这四个函数都具有取随机值的功能,具体呢就不太一样了。
且看:
17:01:06 SQL> select dbms_random.value() from dual;
DBMS_RANDOM.VALUE()
-------------------
0.0536824248407651
17:05:09 SQL> select dbms_random.value(10,100) from dual;
DBMS_RANDOM.VALUE(10,100)
-------------------------
29.2420951206225
17:05:27 SQL> select dbms_random.value(-1,-4) from dual;
DBMS_RANDOM.VALUE(-1,-4)
------------------------
-3.98278017569502
参照oracle官方文档解释呢,value函数用于返回两个数值之间的随机数,value(low,high),如果你想得到的数值结果介于两个数之间呢,就用value了。
17:05:37 SQL> select dbms_random.normal() from dual;
DBMS_RANDOM.NORMAL()
--------------------
1.09252306706526
17:08:10 SQL> select dbms_random.normal() from dual;
DBMS_RANDOM.NORMAL()
--------------------
-0.279331762111692
至于normal函数呢,那就是真正的随机数啦,出来的结果呢肯定不会让你猜到拉(如果你猜对了,恭喜你,你可以去买彩票啦!)
再看random函数
17:08:12 SQL> select dbms_random.random() from dual;
DBMS_RANDOM.RANDOM()
--------------------
1936087379
17:10:30 SQL> select dbms_random.random() from dual;
DBMS_RANDOM.RANDOM()
--------------------
-972915078
查看官方文档说的是random函数返回的值介于2的31次方和-2的31次方之间