oracle

주민번호, 법인번호 생성 함수

함수생성

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
32
33
34
35
36
37
38
39
40
41
CREATE OR REPLACE FUNCTION NH_CAP.GET_FNOSIL
(
    V_FNO   IN    VARCHAR2,
    V_YEAR  IN    VARCHAR2    
)
RETURN VARCHAR2
IS
    OUT_REAL_NO VARCHAR2(100);
    
BEGIN
 
    IF V_FNO = 'E' THEN                                                                                         /* E는 법인번호 */
        SELECT ROUND(DBMS_RANDOM.VALUE(1101 , 2850), 0||                                                   /* 등기관서번호  4자리 */
               ROUND(DBMS_RANDOM.VALUE(11 , 86), 0||                                                       /* 법인종류번호 2자리 */
               LPAD(ROUND(DBMS_RANDOM.VALUE(0 , 9999999), 0), 7'0')                                        /* 일련번호6자리 오류검색번호1자리 */
          INTO OUT_REAL_NO
          FROM DUAL;
    ELSIF V_FNO = 'P' THEN                                                                                      /* P는 주민번호 */
        IF  (TO_NUMBER(V_YEAR)) >= 2020  THEN                                                                   /* 2000년도 이후 출생자 */
            SELECT LPAD(ROUND(DBMS_RANDOM.VALUE(30 , TO_NUMBER(SUBSTR(V_YEAR , 3 , 2))), 0), 2 , '0'||     /* 현재년도까지 생성*/     
                   LPAD(ROUND(DBMS_RANDOM.VALUE(1 , 12),0), 2 , '0'||
                   LPAD(ROUND(DBMS_RANDOM.VALUE(1 , 31),0), 2 , '0'||
                   ROUND(DBMS_RANDOM.VALUE(3000000 , 4999999), 0
              INTO OUT_REAL_NO
              FROM DUAL;
        ELSE
            SELECT LPAD(ROUND(DBMS_RANDOM.VALUE(30 , TO_NUMBER(SUBSTR(V_YEAR , 3 , 2))), 0), 2 , '0'||
                   LPAD(ROUND(DBMS_RANDOM.VALUE(1 , 12), 0), 2 , '0'||
                   LPAD(ROUND(DBMS_RANDOM.VALUE(1 , 31), 0), 2 , '0'||
                   ROUND(DBMS_RANDOM.VALUE(1000000 , 2999999), 0)
              INTO OUT_REAL_NO
              FROM DUAL;
        END IF;
    END IF;
   
    
    RETURN OUT_REAL_NO;
    
END;
/
 
cs

 

함수호출

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DECLARE
 
    V_OUTPUT VARCHAR2(200);
 
BEGIN
 
    for i in 1 .. 5 LOOP
 
    V_OUTPUT := GET_FNOSIL('E','1995');
    DBMS_OUTPUT.PUT_LINE(V_OUTPUT);
    
    END LOOP;
 
END;
 
cs
,

최근 댓글

최근 트랙백

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

태그

링크

카운터

Today :
Yesterday :
Total :