오라클의 패키지 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>
이는 랜덤한 패스워드, 추첨번호 등에 응용할 수 있겠다.
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 |