오라클의 패키지 dbms_random은 랜덤한 숫자/문자를 만들어 주는 기능을 제공한다.
이는 랜덤한 패스워드, 추첨번호 등에 응용할 수 있겠다.
DB단에서 생성되므로 외부의 로직(웹,APP,..)에 대한 의존성을 없앨 수 있는 장점이 있겠다.

패키지생성: /rdbms/admin/dbmsrand.sql
패키지 : DBMS_RANDOM


DBMS_RANDOM 패키지내 함수

RANDOM : 랜덤한 숫자 생성

VALUE : 랜덤한 숫자 생성(지정한 범위에서, 디폴트: 0-1)

STRING : 랜덤한 문자열 생성(문자열의 구성은 첫번째 인수값으로 지정.)
첫번째 인수값
U - 대문자
L - 소문자
A - Alphanumeric
X - Alphanumeric (대문자로 된)
P - 출력가능한 문자로만
두번째 인수값 - 문자열길이 지정

INITIALIZE : seed숫자를 통한 패키지의 초기화

SEED : seed숫자를 변경

TERMINATE : 종료

STRING 함수에서 A, X의 경우 알파뉴메릭으로 생성된다고 했지만,
여러번 테스트해 보았지만 숫자가 포함되어 생성되는 경우는 없었다.
신뢰하지 않는 것이 좋겠다.


SQL> col random format 999999999999999999999
SQL> select dbms_random.random from dual; 랜덤한 숫자 출력(양수/음수)

RANDOM
----------------------
712490986

SQL> /

RANDOM
----------------------
-265131627

SQL> select dbms_random.value from dual; 랜덤한 숫자 출력(0~1사이)

VALUE
----------
.479131147

SQL> select dbms_random.value(1,1000) random from dual; 1~1000사이의 숫자

RANDOM
----------------------
727

SQL> select dbms_random.value(100000000000, 999999999999) random from dual; 위와 마찬가지

RANDOM
----------------------
314598161006

SQL> set linesize 50
SQL> select dbms_random.string('U', 20) str from dual; 대문자로 된 랜덤한 문자열

STR
--------------------------------------------------
MAFMGVJVTUTCYJMCVJOP

SQL> select dbms_random.string('L', 20) str from dual; 소문자로 된 랜덤한 문자열

STR
--------------------------------------------------
ntpmvektqqgytitlmabi

SQL> select dbms_random.string('A', 20) str from dual; 대/소문자로 된 랜덤한 알파뉴메릭(문자/숫자)

STR
--------------------------------------------------
jhsVWesqaKAJbKuPJeLu

SQL> select dbms_random.string('X', 20) str from dual; 대문자로 된 랜덤한 알파뉴메릭(문자/숫자)

STR
--------------------------------------------------
GMRG5IJFEIEI0E0YCG9C

SQL> select dbms_random.string('P', 20) str from dual;

STR
--------------------------------------------------
}t.OY)Sh6AiEq4L>=-K+

SQL>

'Databases' 카테고리의 다른 글

꼭 필요한 tip 몇가지  (0) 2007.05.02
Oracle에서 Not In 과 Not exists 차이점  (0) 2007.05.02
대용량 Import 성능 향상하는 방법  (0) 2007.05.02
쇼핑몰 무한 카테고리 구현  (0) 2007.05.02
포트변경  (1) 2007.04.25

+ Recent posts