oracle插入随机数据

/************************************************************  
** Table: SYS.T_PARTITION_RANGE  
** Number of Records: 10000  
************************************************************/  

DECLARE  
  t_seed NUMBER(20);  
BEGIN  
  -- Initialize Random Number Generator  
  SELECT TO_NUMBER(TO_CHAR(SYSDATE, 'MMDDHH24MISS'))  
    INTO t_seed  
  FROM Dual;  

  DBMS_RANDOM.INITIALIZE(t_seed);  

  -- Generate Random Data  
  FOR t_counter IN 1..10000 LOOP  
    INSERT INTO "SYS"."T_PARTITION_RANGE" (  
      "ID", "NAME"  
    ) VALUES (  
      DBMS_RANDOM.VALUE(0.00, 2147483647.00), DBMS_RANDOM.STRING('A', DBMS_RANDOM.VALUE(1, 50))  
    );  
  END LOOP;  

  DBMS_RANDOM.TERMINATE;  
END;  
/  

COMMIT;  
/  


 大家比较常用的是使用DBMS_RANDOM.RANDOM来生成随机数,这里我们介绍一下使用DBMS_RANDOM包中的STRING函数来生成随机字符串的功能。  

1.使用desc可以查看DBMS_RANDOM.STRING参数说明  
sec@asd> desc DBMS_RANDOM  
……省略……  
FUNCTION STRING RETURNS VARCHAR2
 Argument Name                  Type                    In/Out Default?
 ------------------------------ ----------------------- ------ --------
 OPT                            CHAR                    IN
 LEN                            NUMBER                  IN  
……省略……  

DBMS_RANDOM.STRING函数需要的两个参数是OPT和LEN。  
OPT参数取值内容如下:  
'u','U' - 大写字母  
'l','L' - 小写字母  
'a','A' - 大、小写字母  
'x','X' - 数字、大写字母  
'p','P' - 可打印字符  

LEN参数指定生成字符串的长度。  

2.分别演示一下生成随机字符串的例子  
1)生成长度为10的由大写字母构成的字符串  
sec@ora10g> col string for a15  
sec@ora10g> select DBMS_RANDOM.STRING('u',10) string from dual;  

STRING  
---------------  
DXOMOOCHAS  

sec@ora10g> select DBMS_RANDOM.STRING('U',10) string from dual;  

STRING  
---------------  
XTPMXMRLCS  

2)生成长度为10的由小写字母构成的字符串  
sec@ora10g> select DBMS_RANDOM.STRING('l',10) string from dual;  

STRING  
---------------  
vrekvponue  

sec@ora10g> select DBMS_RANDOM.STRING('L',10) string from dual;  

STRING  
---------------  
rlfhmatweg  

3)生成长度为10的由大写字符和小写字母共同构成的字符串  
sec@ora10g> select DBMS_RANDOM.STRING('a',10) string from dual;  

STRING  
---------------  
fWJ***EerI  

sec@ora10g> select DBMS_RANDOM.STRING('A',10) string from dual;  

STRING  
---------------  
FgdvvzZGAS  

4)生成长度为10的由数字和大写字母共同构成的字符串  
sec@ora10g> select DBMS_RANDOM.STRING('x',10) string from dual;  

STRING  
---------------  
RRQ80CSDC2  

sec@ora10g> select DBMS_RANDOM.STRING('X',10) string from dual;  

STRING  
---------------  
Q9V9MMF9ZO  

5)生成长度为10的由数字和大写字母共同可打印字符构成的字符串  
sec@ora10g> select DBMS_RANDOM.STRING('p',10) string from dual;  

STRING  
---------------  
p/u}}7s`5v  

sec@ora10g> select DBMS_RANDOM.STRING('P',10) string from dual;  

STRING  
---------------  
i8(pF2FFC9  


上一篇:【DB笔试面试561】在Oracle中,如何预估即将创建索引的大小?


下一篇:DBMS第四篇(上):SQL 查询语言 (第三章)——SQL的组成、基本模式定义、查询基本结构