공룡이라는 ORACLE

강사님께 제공받은 64진수 변환 프로시저

Jungsoomin :) 2020. 9. 8. 16:48

/* Composite Pattern에 따른 상하 구성 관계는 기본적으로 Path Query에 의하여
 * 개발이 가능하다. Oracle의 경우 start with connected by이다.
 * 하지만 구성 관계의 Level이 깊어질 수록 성능을 보장하기 힘들다. 
 * 이에 객체 상하관계 전체를 primary key로 구성하여 Like 절을 위주로 활용한다.
 * 객체 ID를 숫자 기반으로 만들어내되 기 길이를 좀더 줄여서 표현하기 위하여 
 * Alpha-Numeric만을 사용한 최대 축약형은 제공되지 않으므로 62진법(10 + 26[대문자] + 26[소문자])에
 * 따른 문자열 표현을 만들기 위하여 개발함   
 */ 
CREATE OR REPLACE FUNCTION to62(intNum number)
  RETURN VARCHAR
IS
  res VARCHAR2(100) := '';
  quot number; --몫
  rema number; --나머지
BEGIN
quot := intNum;
WHILE quot > 0 LOOP
rema := mod(quot, 62);  
quot := FLOOR(quot / 62); 

IF rema < 10 THEN
res := chr(ASCII('0') + rema) || res;
ELSIF rema < 36 THEN
res := chr(ASCII('A') + (rema - 10)) || res;
ELSE
res := chr(ASCII('a') + (rema - 36)) || res;
END IF;
END LOOP;
RETURN res;
END;

select to62(34574357435787) from dual;


62   63
       1    1

'공룡이라는 ORACLE' 카테고리의 다른 글

다중 insert 시 시퀀스 넘버가 PK 제약조건을 어긋내는 경우 해결방안.  (0) 2020.10.20
TopN  (0) 2020.10.06
간단한 백업  (0) 2020.10.03
설계, 향후 추가  (0) 2020.09.24
Oracle DataBase 의 인덱스.  (0) 2020.08.26