'oracle'에 해당되는 글 6건

oracle

SELECT * FROM ALL_SOURCE

1
2
3
4
5
6
SELECT *
  FROM ALL_SOURCE
 WHERE OWNER = '유저'
     AND NAME = '테이블,프로시저이름'
     AND TYPE = 'TABLE,PROCEDURE 등'
     AND TEXT = '내용'
,
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/* Formatted on 2015/08/31 오전 10:39:08 (QP5 v5.227.12220.39754) */
  SELECT KYC_SEQ,
              CUS_REC_NO,
              DETAIL_GUBN,
              COUNT (*)
    FROM (SELECT (SELECT LIST_NM
                                FROM CM_LISTDATA
                               WHERE LIST_CD = A.DETAIL_GUBN) AS DETAIL_GUBN_NM,
                 A.DETAIL_GUBN AS DETAIL_GUBN,
                 A.KYC_SEQ AS KYC_SEQ,
                 A.CUS_REC_NO AS CUS_REC_NO,
                 A.PROC_DEPTH AS PROC_DEPTH,
                 A.DA_YN AS DA_YN,
                 B.MEM_NM_KR AS NM_KR,
                 B.MEM_NM_EN AS NM_EN,
                 B.MEM_NATION_CD AS NATION_CD,
                 (SELECT NAT_ENM
                     FROM CM_RA_NAT
                   WHERE ISO_TWO_NACD = B.MEM_NATION_CD) AS NATION_ENM,
                 A.KYC_GUBN AS KYC_GUBN,
                 (SELECT LIST_NM
                    FROM CM_LISTDATA
                   WHERE LIST_CD = A.EXE_DEPT) AS EXE_DEPT,
                 (SELECT USR_NM
                    FROM SYSTEM_USER
                   WHERE USR_ID = A.EXE_USER) AS EXE_USER,
                 A.EDD_EXE_DT AS EXE_DT,
                 A.EDD_EXE_TM AS EXE_TM,
                 A.SDD_EXE_DT AS SDD_EXE_DT,
                 A.SDD_EXE_TM AS SDD_EXE_TM,
                 A.PROC_STS AS PROC_STS,
                 (SELECT LIST_NM
                    FROM CM_LISTDATA
                   WHERE LISTGR_CD = 'COM002' AND LIST_CD = A.PROC_STS) AS PROC_STS_NM,
                 C.RA_RECHK_DT AS RA_RECHK_DT,
                 A.EXE_DEPT AS EXE_DEPT_CODE
            FROM KYC_EXE A, KYC_PERSON_INFO B, RA_RISK_INFO C
          WHERE A.DETAIL_GUBN = 'Z0'
               AND A.PROC_STS NOT IN ('20')
               AND A.KYC_SEQ = B.KYC_PERSON_SEQ(+)
               AND A.CUS_REC_NO = B.CUS_REC_NO(+)
               AND A.KYC_SEQ = C.KYC_SEQ
               AND A.CUS_REC_NO = C.CUS_REC_NO
          UNION ALL
          SELECT (SELECT LIST_NM
                    FROM CM_LISTDATA
                   WHERE LIST_CD = A.DETAIL_GUBN)
                    AS DETAIL_GUBN_NM,
                 A.DETAIL_GUBN AS DETAIL_GUBN,
                 A.KYC_SEQ AS KYC_SEQ,
                 A.CUS_REC_NO AS CUS_REC_NO,
                 A.PROC_DEPTH AS PROC_DEPTH,
                 A.DA_YN AS DA_YN,
                 B.COM_NM_KR AS NM_KR,
                 B.COM_NM_EN AS NM_EN,
                 B.COM_NATION_CD AS NATION_CD,
                 (SELECT NAT_ENM
                    FROM CM_RA_NAT
                   WHERE ISO_TWO_NACD = B.COM_NATION_CD)
                    AS NATION_ENM,
                 A.KYC_GUBN AS KYC_GUBN,
                 (SELECT LIST_NM
                    FROM CM_LISTDATA
                   WHERE LIST_CD = A.EXE_DEPT)
                    AS EXE_DEPT,
                 (SELECT USR_NM
                    FROM SYSTEM_USER
                   WHERE USR_ID = A.EXE_USER)
                    AS EXE_USER,
                 A.EDD_EXE_DT AS EXE_DT,
                 A.EDD_EXE_TM AS EXE_TM,
                 A.SDD_EXE_DT AS SDD_EXE_DT,
                 A.SDD_EXE_TM AS SDD_EXE_TM,
                 A.PROC_STS AS PROC_STS,
                 (SELECT LIST_NM
                    FROM CM_LISTDATA
                   WHERE LISTGR_CD = 'COM002' AND LIST_CD = A.PROC_STS)
                    AS PROC_STS_NM,
                 C.RA_RECHK_DT AS RA_RECHK_DT,
                 A.EXE_DEPT AS EXE_DEPT_CODE
            FROM KYC_EXE A, KYC_COMP_INFO B, RA_RISK_INFO C
           WHERE     A.DETAIL_GUBN = 'A0'
                 AND A.PROC_STS NOT IN ('20')
                 AND A.KYC_SEQ = B.KYC_COM_SEQ(+)
                 AND A.CUS_REC_NO = B.CUS_REC_NO(+)
                 AND A.KYC_SEQ = C.KYC_SEQ
                 AND A.CUS_REC_NO = C.CUS_REC_NO)
GROUP BY KYC_SEQ, CUS_REC_NO, DETAIL_GUBN
  HAVING COUNT (*) >= 2;
,
oracle

DICTIONARY, ALL_TAB_COMMENTS, ALL_COL_COMMENTS

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SELECT * FROM DICTIONARY; --오라클 사전 명령어 코멘트들
 
SELECT * FROM DICTIONARY WHERE TABLE_NAME LIKE '%COL%'-- 사전에서 테이블네임에 COL이 들어간 테이블 찾기
 
-- 테이블 코멘트
SELECT * FROM ALL_TAB_COMMENTS WHERE OWNER = 'NH_CAP';    
--NH_CAP에 해당되는 모든탭의코멘트?
 
SELECT * FROM ALL_COL_COMMENTS WHERE OWNER = 'NH_CAP' AND TABLE_NAME = 'RULE_RESULT'
--NH_CAP의 테이블이름이 룰리절트의 모든 컬럼 코멘트
 
 
-- 테이블 컬럼 속성
 
SELECT * FROM USER_TAB_COLS WHERE TABLE_NAME = 'RULE_RESULT'
--룰리절트 탭 컬럼표시
 
SELECT * FROM USER_TAB_COLS WHERE COLUMN_NAME LIKE '%SEC_%'
--컬럼에 SEC가 들어가있는것 표시
 
SELECT DISTINCT TABLE_NAME FROM ALL_COL_COMMENTS WHERE OWNER = 'NH_CAP' AND (COLUMN_NAME LIKE 'SEC_%' AND  COLUMN_NAME <> 'SECOND_NAME'); 
--컬럼에 SEC가 들어가있고 세컨드네임이 아닌 중복제거한 테이블들 출력
cs
,
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
CREATE OR REPLACE FUNCTION NH_CAP.GET_KORNM
(
    
    V_FROM  IN    VARCHAR2,
    V_TO    IN    VARCHAR2
           
)
RETURN VARCHAR2
IS
    
    OUT_REAL_NM VARCHAR2(100);
    TYPE V_ARR IS TABLE OF VARCHAR2(10);
    V_FIRST V_ARR;
    V_LAST  V_ARR;
    V_MID   V_ARR; 
    
    
BEGIN
    
    V_LAST  :=  V_ARR('김' , '이' , '박' , '최' , '정'
                    , '강' , '조' , '윤' , '장' , '임'
                    , '오' , '한' , '신' , '서' , '권'
                    , '황' , '안' , '송' , '유' , '홍'
                    , '전' , '고' , '문' , '손' , '양'
                    , '배' , '조' , '백' , '허' , '남');
                     
    V_MID   :=  V_ARR('민' , '현' , '동' , '인' , '지'
                    , '현' , '재' , '우' , '건' , '준'
                    , '승' , '영' , '성' , '진' , '준'
                    , '정' , '수' , '광' , '영' , '호'
                    , '중' , '훈' , '후' , '우' , '상'
                    , '연' , '철' , '아' , '윤' , '은');
                    
    V_FIRST :=  V_ARR('유' , '자' , '도' , '성' , '상'
                    , '남' , '식' , '일' , '철' , '병'
                    , '혜' , '영' , '미' , '환' , '식'
                    , '숙' , '자' , '희' , '순' , '진'
                    , '서' , '빈' , '정' , '지' , '하'
                    , '연' , '성' , '공' , '안' , '원');              
    
    SELECT SUBSTR(V_LAST(ROUND(DBMS_RANDOM.VALUE(1 , 30), 0)) || 
                  V_MID(ROUND(DBMS_RANDOM.VALUE(1 , 30), 0)) ||
                  V_FIRST(ROUND(DBMS_RANDOM.VALUE(1 , 30), 0)) ||
                  V_MID(ROUND(DBMS_RANDOM.VALUE(1 , 30), 0)) ||
                  V_FIRST(ROUND(DBMS_RANDOM.VALUE(1 , 30), 0))
                 ,V_FROM,V_TO)
      INTO OUT_REAL_NM
      FROM DUAL;
   
    
    RETURN OUT_REAL_NM;
    
END;
/
 
cs

 

함수호출

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
DECLARE
 
    V_OUTPUT VARCHAR2(200);
 
BEGIN
 
    for i in 1 .. 100 LOOP
 
    V_OUTPUT := GET_KORNM(1,3
    --1글자부터 3글자까지 생성(3글자이름) ex)GET_KORNM(1, 2)면 2글자이름, 2,3이면 2글자인데 성대신 2번째 글자와 3번째 글자로출력
    DBMS_OUTPUT.PUT_LINE(V_OUTPUT);
    
    END LOOP;
 
END;
 
cs
,
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
,
oracle

끝나는날짜 구하는 함수(함수호출 사용법과 생성법)

함수호출 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DECLARE
 
    V_OUTPUT VARCHAR2(200);
 
BEGIN
 
    for i in 0 .. 1000 LOOP
 
    V_OUTPUT := GET_RANDOM_DATE('201402');
    DBMS_OUTPUT.PUT_LINE(V_OUTPUT);
    
        IF V_OUTPUT > '28' THEN                      /*확인하는부분*.
            DBMS_OUTPUT.PUT_LINE('@@@@@@@@@@@@@@@');
        END IF;
    
    END LOOP;
cs

 

함수생성

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
42
43
44
45
46
47
48
49
50
51
52
CREATE OR REPLACE FUNCTION NH_CAP.GET_RANDOM_DATE
(
    
        IF V_OUTPUT > '28' THEN                      /*확인하는부분*.
            DBMS_OUTPUT.PUT_LINE('@@@@@@@@@@@@@@@');
        END IF;
    
    END LOOP;
cs
    V_DATE IN VARCHAR2    
)
RETURN VARCHAR2
IS
    OUT_REAL_NO VARCHAR2(100);
    V_YEAR NUMBER(10DEFAULT 0;
    V_MONTH NUMBER(10DEFAULT 0;
BEGIN
    
    V_YEAR:=TO_NUMBER(SUBSTR(V_DATE,1,4));
    V_MONTH:=TO_NUMBER(SUBSTR(V_DATE,5,2));
    
 
    IF V_MONTH = 02 THEN 
        IF (MOD(V_YEAR,4)=0 AND MOD(V_YEAR,100)!=0) OR MOD(V_YEAR,400)=0 THEN/*윤년계산*/
            SELECT LPAD(ROUND(DBMS_RANDOM.VALUE(1,29),0) , 2 , '0')
            INTO OUT_REAL_NO
            FROM DUAL;
        ELSE
            SELECT LPAD(ROUND(DBMS_RANDOM.VALUE(1,28),0) , 2 , '0')
            INTO OUT_REAL_NO
            FROM DUAL;
        END IF;
    ELSIF MOD(V_MONTH,2)=0 THEN/*짝수달이면*/
        IF V_MONTH<8 THEN
            SELECT LPAD(ROUND(DBMS_RANDOM.VALUE(1,30),0) , 2 , '0')
            INTO OUT_REAL_NO
            FROM DUAL;
        ELSE
            SELECT LPAD(ROUND(DBMS_RANDOM.VALUE(1,31),0) , 2 , '0')
            INTO OUT_REAL_NO
            FROM DUAL;
        END IF;
    ELSE/*홀수달이면*/
        IF V_MONTH<8 THEN 
            SELECT LPAD(ROUND(DBMS_RANDOM.VALUE(1,31),0) , 2 , '0')
            INTO OUT_REAL_NO
            FROM DUAL;
        ELSE
            SELECT LPAD(ROUND(DBMS_RANDOM.VALUE(1,30),0) , 2 , '0')
            INTO OUT_REAL_NO
            FROM DUAL;
        END IF;
    END IF;
    
    RETURN OUT_REAL_NO;
    
END;
/
 
cs

'oracle' 카테고리의 다른 글

SELECT * FROM ALL_SOURCE  (0) 2015.08.31
조회 건수가 틀릴때 확인방법  (0) 2015.08.31
DICTIONARY, ALL_TAB_COMMENTS, ALL_COL_COMMENTS  (0) 2015.04.06
이름 생성 함수  (0) 2015.04.06
주민번호, 법인번호 생성 함수  (0) 2015.04.06
,
  [ 1 ]  

최근 댓글

최근 트랙백

알림

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

태그

링크

카운터

Today :
Yesterday :
Total :