티스토리 뷰
** ASCII 코드의 값 범위
45217 ~ 51454 -- 한글
48 ~ 57 -- 숫자
65 ~ 90 -- 대문자
97 ~ 122 -- 소문자
** 예제는 3자리수
** 규칙
규칙1. 채번 우선순위는 숫자->알파벳대문자 : 0 ~ Z
EX) XX0, XX1, XX2 ... XX8, XX9, XXA, XXB, XXC, ...
규칙2. 마지막 자리 부터 채워져 나간다
EX) 000, 001, 002, ... 00Y, 00Z, 010, 011, 012, ...
** 예제
예1)
MAX CODE : DV3 -> DV4
예2)
MAX CODE : DZZ -> E00
** FUNCTION
CREATE OR REPLACE FUNCTION FUNC_ASC_NUMBER
RETURN VARCHAR IS
REAL_1 NUMBER(2);
REAL_2 NUMBER(2);
REAL_3 NUMBER(2);
TEMP_1 NUMBER(2);
TEMP_2 NUMBER(2);
TEMP_3 NUMBER(2);
LAST_CODE VARCHAR2(3);
BEGIN
REAL_1 := 0;
REAL_2 := 0;
REAL_3 := 0;
TEMP_1 := 0;
TEMP_2 := 0;
TEMP_3 := 0;
SELECT MAX(CODE_COLUMN) INTO LAST_CODE FROM CUSTOM_CODE_TABLE;
// 문자를 -> ASCII 코드로 변환.
REAL_1 := ASCII(SUBSTR(LAST_CODE, 1, 1));
REAL_2 := ASCII(SUBSTR(LAST_CODE, 2, 1));
REAL_3 := ASCII(SUBSTR(LAST_CODE, 3, 1));
-- 3번째 자리가 10진수 0 ~ 8 일 시 9로
IF (REAL_3 > 47) AND (REAL_3 < 57) THEN --NUM + 0 ~ 8
REAL_3 := REAL_3+1;
-- 3번째 자리가 10진수 9 또는 특수문자 :, ;, <, =, >, ?, @ 일 시 대문자 A 로.
ELSIF (REAL_3 > 56) AND (REAL_3 < 65) THEN --
REAL_3 := 65;
-- 3번째 자리가 A ~ Y 일 시 Z 로
ELSIF (REAL_3 > 64) AND (REAL_3 < 90) THEN --ALPABAT +
REAL_3 := REAL_3+1;
-- 위의 3가지 조건이 아닐 시
ELSE
-- 3 번째 자리는 0
-- TEMP_2 의 변수 값 1로 --> 2 번째 자리수를 컨트롤 하기 위해.
REAL_3 := 48;
TEMP_2 := 1;
END IF;
IF TEMP_2 > 0 THEN
-- 2번째 자리가 10진수 0 ~ 8 일 시 9로
IF (REAL_2 > 47) AND (REAL_2 < 57) THEN --NUM +
REAL_2 := REAL_2+1;
-- 2번째 자리가 10진수 9 또는 특수문자 :, ;, <, =, >, ?, @ 일 시 대문자 A 로.
ELSIF (REAL_2 > 56) AND (REAL_2 < 65) THEN
REAL_2 := 65;
-- 2번째 자리가 A ~ Y 일 시 Z 로
ELSIF (REAL_2 > 64) AND (REAL_2 < 90) THEN --ALPABAT +
REAL_2 := REAL_2+1;
-- 위의 3가지 조건이 아닐 시
ELSE
-- 2 번째 자리는 0
-- TEMP_1 의 변수 값 1로 --> 1 번째 자리수를 컨트롤 하기 위해.
REAL_2 := 48;
TEMP_1 := 1;
END IF;
END IF;
IF TEMP_1 > 0 THEN
-- 2번째 자리가 10진수 0 ~ 8 일 시 9로
IF (REAL_1 > 47) AND (REAL_1 < 57) THEN --NUM +
REAL_1 := REAL_1+1;
-- 2번째 자리가 10진수 9 또는 특수문자 :, ;, <, =, >, ?, @ 일 시 대문자 A 로.
ELSIF (REAL_1 > 56) AND (REAL_1 < 65) THEN
REAL_1 := 65;
-- 2번째 자리가 A ~ Y 일 시 Z 로
ELSIF (REAL_1 > 64) AND (REAL_1 < 90) THEN --ALPABAT +
REAL_1 := REAL_1+1;
END IF;
END IF;
-- 3 개 수를 CHAR 형으로 변환하여 이어 붙임.
LAST_CODE := CHR(REAL_1) || CHR(REAL_2) || CHR(REAL_3);
RETURN LAST_CODE;
END;
'프로그래밍' 카테고리의 다른 글
[DB] IBATIS 동적 SQL 요소. (0) | 2016.12.24 |
---|---|
[ETC] Eclipse Java Decompiler (0) | 2016.12.24 |
[DB] ORACLE 정규식 (0) | 2016.12.24 |
[ETC] LINUX - ALIAS (0) | 2016.12.24 |
[JAVASCRIPT] IE9 이하 팝업창에서 부모창으로 배열데이터 전송 시 주의 점. (0) | 2016.12.24 |
- Total
- Today
- Yesterday
- 푸에르토 나탈레스
- 킹덤 호텔
- 빅토리아폴스
- 볼리비아
- 칼라마
- 마추피추
- 토레스 델 파이네
- Cusco
- 애드센스
- Cambodia
- aguas calientes
- calama
- jQuery
- 후마리
- 족발
- 캄보디아
- 햄버거
- Namibia
- 나미비아
- 쿠스코
- 성계 투어
- 우유니
- Oracle
- 아구아스 칼리엔테스
- 성스러운 계곡
- 칠레
- 남미
- 남미 저가항공
- Uyuni
- 빈트후크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |