본문 바로가기
개발팁

oracle dbms_random 오라클 랜덤 값 생성하기

by devscb 2024. 10. 22.
반응형

 

오라클에서는 랜덤한 값을 생성하기 위해 DBMS_RANDOM이란 패키지를 제공합니다.
이 패키지 안에 있는 함수와 프로시저들을 알아보겠습니다.

요약

프로시저/함수 설명
NORAMAL 함수 정규분포(가우스 분포)에서 특정한 숫자를 리턴합니다
RANDOM 함수 임의의 숫자를 리턴합니다
SEED 프로시저 seed값을 리셋합니다
STRING 함수 임의의 문자열을 리턴합니다
VALUE 함수 두 개의 숫자 파라미터 범위 내의 임의의 정수를 가져옵니다.

NORAML 함수

표준 정규 분포(가우스 분포)에서의 임의값을 추출하는 함수입니다.

-- 프로토 타입
DBMS_RANDOM.NORMAL
RETURN NUMBER;

-- 쿼리 예
SELECT DBMS_RANDOM.NORMAL FROM  DUAL;

-- 출력 예
-- 1.02863830167819718693651743539890024055

RANDOM 함수

-(2의 31제곱)보다 크거나 같고, 2의 31제곱보다 작은 임의의 정수를 생성합니다.

-- 프로토 타입
DBMS_RANDOM.RANDOM
RETURN BINARY_INTEGER;

-- 쿼리 예
SELECT DBMS_RANDOM.RANDOM FROM  DUAL;

-- 출력 예
-- -672618330

SEED 프로시저

새로운 seed를 지정하여 임의값 생성 시퀀스를 새로 생성합니다.
기존과 동일한 seed를 지정하면 동일 시퀀스 내의 첫 번째 값으로 돌아가므로,
매 호출 후 임의값을 추출하면 같은 값이 나옵니다.

-- 프로토타입
DBMS_RANDOM.SEED 
(                                                            
    val IN  BINARY_INTEGER -- 임의값을 생성할 seed 번호나 문자열
);

DBMS_RANDOM.SEED 
(                                                            
    val IN VARCHAR2  --임의값을 생성할 seed 번호나 문자열
);


-- 쿼리 예
DBMS_RANDOM.SEED(3);

STRING 함수

임의의 문자열을 생성합니다.

-- 프로토타입
DBMS_RANDOM.STRING
(                           

    opt IN  CHAR, -- 생성하고 싶은 문자열의 형태
     -- 'u' 또는 'U': 대문자 알파벳의 문자열
     -- 'l' 또는 'L': 소문자 알파벳의 문자열
     -- 'a' 또는 'A': 대소문자 구분 없이 임의의 알파벳의 문자열
     -- 'x' 또는 'X': 임의의 대문자 알파벳 또는 숫자의 문자열
     -- 'p' 또는 'P': 임의의 출력 가능한 문자들의 배열
     -- 그 외의 값일 경우에는 기본적으로 대문자 알파벳의 문자열
    len   IN  NUMBER --생성할 문자열의 길이
) 
RETURN VARCHAR2;

-- 쿼리 예
SELECT DBMS_RANDOM.STRING('a', 1) FROM  DUAL;

-- 출력 예
-- N

VALUE 함수

범위 내에서 임의의 숫자를 생성합니다.
범위가 지정되지 않은 경우는 0보다 크거나 같고, 1보다 작은 숫자를 생성합니다.

-- 프로토 타입
DBMS_RANDOM.VALUE
(
    low             IN              NUMBER,
    high            IN              NUMBER
) 
RETURN NUMBER;

-- 쿼리 예
SELECT DBMS_RANDOM.VALUE(3, 100) FROM  DUAL;

-- 출력 예
-- 27.44551905499295525401846162094624981733

reference : https://docs.oracle.com/database/timesten-18.1/TTPLP/d_random.htm#TTPLP040

728x90
반응형

댓글