오라클 랜덤 키생성 방법 2가지 FUNCTION(함수) 

 

첫번째 GUID

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

CREATE FUNCTION RANDOM_GUID

    RETURN VARCHAR2 IS

    RNG    NUMBER;

    N      BINARY_INTEGER;

    CCS    VARCHAR2 (128);

    XSTR   VARCHAR2 (4000) := NULL;

  BEGIN

    CCS := '0123456789' || 'ABCDEF';

    RNG := 15;

 

    FOR I IN 1 .. 32 LOOP

      N := TRUNC (RNG * DBMS_RANDOM.VALUE) + 1;

      XSTR := XSTR || SUBSTR (CCS, N, 1);

    END LOOP;

 

    RETURN XSTR;

  END RANDOM_GUID;

다음 함수는 sys_guid ()를 사용하여 uuid 형식으로 변환하는 방법입니다.

 

1

2

3

4

5

6

create or replace function random_uuid return VARCHAR2 is

  v_uuid VARCHAR2(40);

begin

  select regexp_replace(rawtohex(sys_guid()), '([A-F0-9]{8})([A-F0-9]{4})([A-F0-9]{4})([A-F0-9]{4})([A-F0-9]{12})''\1-\2-\3-\4-\5'into v_uuid from dual;

  return v_uuid;

end random_uuid;

 

입맛에 맞게 골라쓰기

 

 

 

자바 내장함수 RandomUUID() 이용하여 만들기 바로가기

https://mo-world.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-%EB%9E%9C%EB%8D%A4-%ED%82%A4-%EC%83%9D%EC%84%B1-JAVA%EB%82%B4%EC%9E%A5-%ED%95%A8%EC%88%98-RAMDOMUUID-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%EB%A7%8C%EB%93%A4%EA%B8%B0

 

오라클에서 자바 RANDOMUUID() 내장함수 쓰기

 

일단,

 

dba_registry 을 뒤져서 오라클에 JVM이 설치되어 있는지 확인한다.

 

select comp_name, version, status from dba_registry; 

 

comp_name컬럼에 JServer JAVA Virtual Machine 이놈이 있다면 가능

 

없으면 

 

sql> @$ORACLE_HOME/javavm/install/initjvm.sql;

실행하거나 

 

저 경로로 가서 해당 sql의 DDL을 직접 복붙해서 실행한다.

이건 안해봤음... 

 

(참조)

 

어쨌든 JVM이 설치되어 있다면, 다음과 같은 SQL명령어를 먼저 실행한다.

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

CREATE OR REPLACE AND COMPILE

 

java source named "RandomUUID"

 

as

 

public class RandomUUID {

 

public static String create() {

 

return java.util.UUID.randomUUID().toString();

 

}

 

};

 

정상적으로 실행이 완료되었다면,

 

이제 FUNCTION을 만들자.

 

1

2

3

4

5

6

7

CREATE OR REPLACE FUNCTION O_ONEMES.RandomUUID

 

RETURN VARCHAR2

 

AS LANGUAGE JAVA

 

NAME 'RandomUUID.create() return java.lang.String' ;

 

 

 

이 함수를 만들었다면,

 

실행해보자

SELECT RANDOMUUID() FROM DUAL;

 

이런식의 결과값이 나올것이다.

ex) 8b636560-99dc-4c75-976b-56350f4f40ca

 

 

추가: 내장객체 쓰지 않고 랜덤 채번 함수 만들기

https://mo-world.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-%EB%9E%9C%EB%8D%A4-%ED%82%A4%EC%83%9D%EC%84%B1-%EB%B0%A9%EB%B2%95-2%EA%B0%80%EC%A7%80-FUNCTION%ED%95%A8%EC%88%98

+ Recent posts