DBMS 1
DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!
13.1. 개요 13.2. 프로시저와 함수 13.2.1. NORMAL 13.2.2. RANDOM 13.2.3. SEED 13.2.4. STRING 13.2.5. VALUEDBMS_RANDOM
본 절에서는 DBMS_RANDOM 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로 설명한다.
표준 정규 분포(가우스 분포)에서의 임의값을 추출하는 함수이다.
NORMAL 함수의 세부 내용은 다음과 같다.
DBMS_RANDOM.NORMAL
RETURN NUMBER;
DECLARE
a NUMBER;
BEGIN
a := DBMS_RANDOM.NORMAL;
END;
/
-(2의 31제곱)보다 크거나 같고, 2의 31제곱보다 작은 임의의 정수를 생성한다.
RANDOM 함수의 세부 내용은 다음과 같다.
DBMS_RANDOM.RANDOM
RETURN BINARY_INTEGER;
DECLARE
a BINARY_INTEGER;
BEGIN
a := DBMS_RANDOM.RANDOM;
END;
/
새로운 시드를 지정하여 임의값 생성 시퀀스를 새로이 생성한다. 기존과 동일한 시드를 지정하면 동일 시퀀스 내의 첫번째 값으로 돌아가므로 매 호출 후 임의값을 추출하면 같은 값이 나온다.
SEED 프로시저의 세부 내용은 다음과 같다.
DBMS_RANDOM.SEED
(
val IN BINARY_INTEGER
);
DBMS_RANDOM.SEED
(
val IN VARCHAR2
);
파라미터
설명
val
임의값을 생성할 시드 번호나 문자열이다.
DECLARE
a BINARY_INTEGER;
BEGIN
DBMS_RANDOM.SEED(3);
a := DBMS_RANDOM.NORMAL;
DBMS_RANDOM.SEED('abc');
a := DBMS_RANDOM.RANDOM;
END;
/
임의의 문자열을 생성한다.
STRING 함수의 세부 내용은 다음과 같다.
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보다 작은 숫자를 생성한다.
VALUE 함수의 세부 내용은 다음과 같다.
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;
/