DBMS 1

DA, SQL, DB보안 등 실무자를 위한 위한 DB기술 바이블!

DBMS_RANDOM

DBMS 1
Tibero 가이드
Tibero System Package Guide
DBMS_RANDOM
작성자
dataonair
작성일
2021-02-18 10:34
조회
944




제13장DBMS_RANDOM




내용 목차






13.1. 개요

13.2. 프로시저와 함수


13.2.1. NORMAL

13.2.2. RANDOM

13.2.3. SEED

13.2.4. STRING

13.2.5. VALUE





13.1. 개요




DBMS_RANDOM은 임의의 숫자를 생성하는 기능을 제공한다.




13.2. 프로시저와 함수




본 절에서는 DBMS_RANDOM 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로 설명한다.




13.2.1. NORMAL




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

NORMAL 함수의 세부 내용은 다음과 같다.

  • 프로토타입
    DBMS_RANDOM.NORMAL
    RETURN NUMBER;
  • 예제
    DECLARE
    a NUMBER;
    BEGIN
    a := DBMS_RANDOM.NORMAL;
    END;
    /





13.2.2. RANDOM




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

RANDOM 함수의 세부 내용은 다음과 같다.

  • 프로토타입
    DBMS_RANDOM.RANDOM
    RETURN BINARY_INTEGER;
  • 예제
    DECLARE
    a BINARY_INTEGER;
    BEGIN
    a := DBMS_RANDOM.RANDOM;
    END;
    /





13.2.3. SEED




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

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;
    /





13.2.4. STRING




임의의 문자열을 생성한다.

STRING 함수의 세부 내용은 다음과 같다.

  • 프로토타입
    DBMS_RANDOM.STRING
    (
    opt IN CHAR,
    len IN NUMBER
    )
    RETURN VARCHAR2;
  • 파라미터

    파라미터 설명
    opt 생성하고 싶은 문자열의 형태이고, 항목은 아래와 같다.

    • 'u' 혹은 'U' : 대문자 알파벳의 문자열
    • 'l' 혹은 'L' : 소문자 알파벳의 문자열
    • 'a' 혹은 'A' : 대소문자 구분 없이 임의의 알파벳의 문자열
    • 'x' 혹은 'X' : 임의의 대문자 알파벳 혹은 숫자의 문자열
    • 'p' 혹은 'P' : 임의의 출력 가능한 문자들의 배열

    그 외의 값일 경우에는 기본적으로 대문자 알파벳의 문자열이다.
    len 생성할 문자열의 길이이다.
  • 예제
    DECLARE
    a varchar2(1000);
    BEGIN
    a := DBMS_RANDOM.STRING('x', 20);
    dbms_output.put_line(a);
    END;
    /





13.2.5. VALUE




범위 내에서 임의의 숫자를 생성한다. 범위가 지정되지 않은 경우는 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;
    /