본 장에서는 DBMS_RANDOM 패키지의 기본 개념과 패키지 내의 프러시저와 함수를 사용하는 방법을 설명한다.
본 절에서는 DBMS_RANDOM 패키지에서 제공하는 프러시저와 함수를 알파벳 순으로 설명한다.
표준 정규 분포(가우스 분포)에서의 임의값을 추출하는 함수이다.
프로토타입
DBMS_RANDOM.NORMAL RETURN NUMBER;
예제
DECLARE a NUMBER; BEGIN a := DBMS_RANDOM.NORMAL; END; /
-(2의 31제곱)보다 크거나 같고, 2의 31제곱보다 작은 임의의 정수를 생성한다.
프로토타입
DBMS_RANDOM.RANDOM RETURN BINARY_INTEGER;
예제
DECLARE a BINARY_INTEGER; BEGIN a := DBMS_RANDOM.RANDOM; END; /
새로운 seed를 지정하여 임의값 생성 시퀀스를 새로 생성한다. 기존과 동일한 seed를 지정하면 동일 시퀀스 내의 첫 번째 값으로 돌아가므로 매 호출 후 임의값을 추출하면 같은 값이 나온다.
프로토타입
seed가 번호인 경우
DBMS_RANDOM.SEED ( val IN BINARY_INTEGER );
seed가 문자열인 경우
DBMS_RANDOM.SEED ( val IN VARCHAR2 );
파라미터
파라미터 | 설명 |
---|---|
val | 임의값을 생성할 seed 번호나 문자열이다. |
예제
DECLARE a BINARY_INTEGER; BEGIN DBMS_RANDOM.SEED(3); a := DBMS_RANDOM.NORMAL; DBMS_RANDOM.SEED('abc'); a := DBMS_RANDOM.RANDOM; END; /
임의의 문자열을 생성한다.
프로토타입
DBMS_RANDOM.STRING ( opt IN CHAR, len IN NUMBER ) RETURN VARCHAR2;
파라미터
파라미터 | 설명 |
---|---|
opt | 생성하고 싶은 문자열의 형태이고, 항목은 아래와 같다.
그 외의 값일 경우에는 기본적으로 대문자 알파벳의 문자열이다. |
len | 생성할 문자열의 길이이다. |
예제
DECLARE a varchar2(1000); BEGIN a := DBMS_RANDOM.STRING('x', 20); dbms_output.put_line(a); END; /
범위 내에서 임의의 숫자를 생성한다. 범위가 지정되지 않은 경우는 0보다 크거나 같고 1보다 작은 숫자를 생성한다.
프로토타입
범위가 지정되지 않은 경우
DBMS_RANDOM.VALUE RETURN NUMBER;
범위가 지정된 경우
DBMS_RANDOM.VALUE ( low IN NUMBER, high IN NUMBER ) RETURN NUMBER;
파라미터
파라미터 | 설명 |
---|---|
low | 임의값 범위 내에서의 최솟값이다. |
high | 임의값 범위 내에서의 최댓값은 이 값보다 크거나 같을 수 없다. |
예제
DECLARE a number; BEGIN a := DBMS_RANDOM.VALUE; a := DBMS_RANDOM.VALUE(-30, 100); END; /