TECH
QUESTION
자주하는 질문답변 입니다.
Oracle
작성자 | 유건데이타 | 등록일 | 2015-05-16 |
제목 | DBMS_RANDOM PACKAGE를 이용하여 RANDOM NUMBER를 생성하는 방법 | ||
---|---|---|---|
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. |
Comment | |||
---|---|---|---|
등록된 코멘트가 없습니다. |