라이프로그


DBMS_RANDOM IT

Oracle8부터는 Random Number를 생성하는 DBMS_RANDOM package를 제공 합니다.

DBMS_RANDOM패키지를 이용해서 Random Number를 생성하는 방법을 간단히 알아 보겠습니다.

☞ Random Number는 -9999999999 부터 9999999999사이의 숫자입니다.

☞ DBMS_RANDOM함수의 리턴 데이터형은 BINARY_INTEGER 입니다.


아래의 내용은 Win2000Pro Oracle8.1.7에서 테스트한 내용 입니다.


1. SYS USER 로 접속하여 아래의 script를 수행 합니다.

script의 위치는 $ORACLE_HOME/rdbms/admin에 있습니다. .

실행할 script : dbmsoctk.sql, prvtoctk.plb, dbmsrand.sql

(경우에 따라서는 utlraw.sql, prvtrawb.plb 를 먼저 수행해야 할 수도 있습니다.)

-- sys유저로 접속 합니다.
SQLPLUS>sys/change_on_install

-- 스크립트를 실행 시킵니다.
SQL>@C:\oracle\ora81\RDBMS\ADMIN\dbmsoctk.sql
SQL>@C:\oracle\ora81\RDBMS\ADMIN\prvtoctk.plb
SQL>@C:\oracle\ora81\RDBMS\ADMIN\dbmsrand.sql


-- 테스트를 하기 위해서 scott유저로 접속 합니다.
SQL>conn scott/tiger





2. Random Number Generator 초기화

Random Number Generator를 다음과 같이 초기화 합니다.

- Randomness를 보장 받기 위하여 seed는 적어도 5digits 이상으로 해야만 합니다.


SQL>EXEC DBMS_RANDOM.INITIALIZE (12345);
PL/SQL 처리가 정상적으로 완료되었습니다.






3. Random Number를 생성하는 예제.

Random Number를 생성하는 예제 입니다.


[예제1]

SQL>DECLARE
random_number BINARY_INTEGER;
BEGIN
random_number := DBMS_RANDOM.RANDOM;
DBMS_OUTPUT.PUT_LINE(TO_CHAR(random_number));
END;
/

510714365

PL/SQL 처리가 정상적으로 완료되었습니다.


[예제2]

SQL>SELECT TO_CHAR(DBMS_RANDOM.RANDOM) FROM DUAL

TO_CHAR(DBMS_RANDOM.RANDOM)
----------------------------------------
-610488908




4. Random Number Generator를 종료

Memory를 Release 하기 위하여 Random Number Generator를 종료 합니다.


SQL>EXEC DBMS_RANDOM.TERMINATE;
PL/SQL 처리가 정상적으로 완료되었습니다.





5. RANDOM NUMBER GENERATOR를 초기화한 이후에 seed 를 변경합니다.

SQL>EXEC DBMS_RANDOM.SEED(12346);
PL/SQL 처리가 정상적으로 완료되었습니다.





6. 참고사항

DBMS_RANDOM.TERMINATE 을 이용하여 정상적으로 Random Number Generator를
종료한 이후에 다시 DBMS_RANDOM.RANDOM을 수행하면 Error는 발생하지 않으나
값은 Return되지 않습니다.

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://charie.pe.kr/tb/1057878 [도움말]