상세 컨텐츠

본문 제목

(Oracle8)dbms_random package 를 이용하여 random number 를 생성하는 방법

프로그래밍/DB

by 라제폰 2008. 12. 23. 13:03

본문

java.sql.SQLException: IO 예외 상황: The Network Adapter could not establish the connection

No. 11514

(Oracle8)dbms_random package 를 이용하여 random number 를 생성하는 방법
=====================================================================

Oracle8 에서는 random number 를 생성하는 dbms_random package 를 제공한다.
이를 이용하여 random number 를 생성하는 방법을 알아본다.
 
1. sys user 로 접속하여 (또는 svrmgrl 에 connect internal) 다음의
   script를 수행한다. script의 위치는 $ORACLE_HOME/rdbms/admin 이다.
  
   dbmsoctk.sql, prvtoctk.plb, dbmsrand.sql

   경우에 따라서는 utlraw.sql, prvtrawb.plb 를 먼저 수행해야 할 수도 있다.
 
2. random number generator 를 다음과 같이 초기화한다. randomness 를 보장
   받기 위하여 seed 는 적어도 5 digits 이상으로 해야만 한다.

   Example :
 
      SQL> exec dbms_random.initialize (12345); 
           PL/SQL procedure successfully completed.
 
3. random number 를 생성한다.
 
   Example 1 :
 
      SQL> set serveroutput on
 
      SQL> declare
         2 random_number binary_integer;
         3 begin
         4 random_number := dbms_random.random;
         5 dbms_output.put_line(to_char(random_number));
         6 end;
         7  /
 
           2116177396
 
           PL/SQL procedure successfully completed.
 
   Example 2 :
 
           DECLARE 
              i BINARY_INTEGER;
           BEGIN 
              dbms_random.initialize(19254); 
              i := dbms_random.random; 
              INSERT INTO some_table VALUES(i); 
              dbms_random.terminate; 
           END; 
 
4. memory 를 release 하기 위하여 random number generator 를 종료한다.
 
   Example:
 
      SQL> exec dbms_random.terminate;
           PL/SQL procedure successfully completed.
 
5. random number generator 를 초기화한 이후에 seed 를 변경한다.
 
   Example:
 
      SQL> exec dbms_random.seed (12346);
           PL/SQL procedure successfully completed.
 
6. 참고사항

   a. dbms_random.terminate 을 이용하여 정상적으로 random number
      generator 를 종료한 이후에 다시 dbms_random.random 를 수행하면
      error 는 발생하지 않으나 값은 return 되지 않는다.

   b. random 함수를 바로 SQL 문장에 사용할 수 없다.

      Example:
 
         SQL> exec dbms_random.initialize (12345);
              PL/SQL procedure successfully completed.
 
         SQL> insert into x values(dbms_random.random);
              insert into x values(dbms_random.random)
                      *
              ERROR at line 1:
              ORA-06571: Function RANDOM does not guarantee
                         not to update the database.
    
    

관련글 더보기