Bulletin no : 11514 참고
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되지 않습니다.
'DataBase > Oracle' 카테고리의 다른 글
유저의 패스워드를 쉽게 바꾸는 방법 (0) | 2008.08.08 |
---|---|
[퍼옴]옵티마이져(OPTIMIZER) (0) | 2008.08.08 |
오라클에서 순위를 쉽게 부여하는법(Rank() Function) (0) | 2008.08.08 |
오라클 HINT (0) | 2008.08.08 |
오라클 플래쉬백 사용하기(Flashback Query) (0) | 2008.08.08 |