ORACLE 9i DBMS_RANDOM
from Beginning Oracle Programming | 정보문화사
1.
DBMS_RANDOM
디폴트로 순차적인 38자리수의 오라클 번호를 생성
2.
DBMS_RANDOM 의 메소드
A.
VALUE() 파라미터 없이
사용하면 38자리의 정확도를 가진 0.0 ~1.0 범위의
수를 리턴한다.
B.
STRING() 무작위 문자열
컬럼에 일정길이의 임의의 값을 넣을 때 유용하다.
STRING(PARAMETER#1, RETURN_LENGTH)
<PARAMETER#1>
U,u 문자열 내의 문자가 모두 대문자
L,l 문자열 내의 문자가 모두 소문자
A,a 문자열 내의 문자가 대문자 또는 소문자
X,x 문자열 내의 문자가 영문,영숫자 로 표현
P,p 출력가능한 모든 문자열로 표현됨
C.
SEED() 무작위로
값을 얻는 시작점
이 패키지는 기본적으로 SESSION ID 와 시간을 가지고
값을 얻는다.
3.
DBMS_RANDOM 샘플
A.
VALUE()
SQL> select dbms_random.value from dual;
VALUE
----------
.402188811
SQL> select trunc(10*dbms_random.value)
from dual;
TRUNC(10*DBMS_RANDOM.VALUE)
---------------------------
4
SQL> /
TRUNC(10*DBMS_RANDOM.VALUE)
---------------------------
3
B.
문자열
리턴 예제 (STRING())
SQL> select
dbms_random.string('u',10) from dual;
DBMS_RANDOM.STRING('U',10)
--------------------------------------------------------------------------------
ZFPHZQODLC
SQL> select
dbms_random.string('l',10) from dual;
DBMS_RANDOM.STRING('L',10)
--------------------------------------------------------------------------------
ztkbqpkpzr
SQL> select dbms_random.string('a',10)
from dual;
DBMS_RANDOM.STRING('A',10)
--------------------------------------------------------------------------------
HiBZKEuZPw
SQL> select
dbms_random.string('x',10) from dual;
DBMS_RANDOM.STRING('X',10)
--------------------------------------------------------------------------------
DU1JS80CBC
SQL> select
dbms_random.string('p',10) from dual;
DBMS_RANDOM.STRING('P',10)
--------------------------------------------------------------------------------
OUBLAY04Lw
C.
동일한
추이로 변화하는 RANDOM 값 (SEED() 이용)
SQL> exec dbms_random.seed('hello');
PL/SQL procedure successfully completed.
SQL> select dbms_random.value from dual;
VALUE
----------
.577350732
SQL> /
VALUE
----------
.713705843
(SQL 종료 후
재접속, SID 동일여부 확인)
SQL> @sid
SID
----------
7
SQL> exec dbms_random.seed('hello');
PL/SQL procedure successfully completed.
SQL> select dbms_random.value from dual;
VALUE
----------
.577350732
SQL> /
VALUE
----------
.713705843
SEED 의 값을
동일하게 한 경우 랜덤값 변화 추이가 동일한 것을 확인할 수 있다.