본문 바로가기

카테고리 없음

ORACLE 9i DBMS_RANDOM v1.0

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 의 값을 동일하게 한 경우 랜덤값 변화 추이가 동일한 것을 확인할 수 있다.