有时候做测试,造数据很麻烦,可以利用dbms.random包+connect by 简化,避免利用循环语句

首先创建一个表wyztest (id int,name varchar(20))


 select rownum,dbms_random.STRING('u',8) from dual connect by level <=1000;
rownum不做解释,刚好生成1000个num,dbms_random.string('u',8)表示8位的随机大写字符串

具体参数含义可以desc dbms_random查询


SQL> desc dbms_random
PROCEDURE INITIALIZE
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 VAL                            BINARY_INTEGER          IN
FUNCTION NORMAL RETURNS NUMBER
FUNCTION RANDOM RETURNS BINARY_INTEGER
PROCEDURE RECORD_RANDOM_NUMBER
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 VAL                            NUMBER                  IN
FUNCTION REPLAY_RANDOM_NUMBER RETURNS NUMBER
PROCEDURE SEED
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 VAL                            BINARY_INTEGER          IN
PROCEDURE SEED
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 VAL                            VARCHAR2                IN
FUNCTION STRING RETURNS VARCHAR2
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 OPT                            CHAR                    IN
 LEN                            NUMBER                  IN
PROCEDURE TERMINATE
FUNCTION VALUE RETURNS NUMBER
FUNCTION VALUE RETURNS NUMBER
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 LOW                            NUMBER                  IN
 HIGH                           NUMBER                  IN

最终将随机生成的1000行结果insert到表中

随机生成n个数值插入到测试表中




相关文章: