oracle插入隨機資料

lhrbest發表於2016-04-01
/************************************************************
** 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
---------------
fWJvpnEerI

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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2073557/,如需轉載,請註明出處,否則將追究法律責任。

相關文章