디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

야근도중 빡쳐서 아오

개발4년차갤로그로 이동합니다. 2011.12.27 21:57:57
조회 167 추천 0 댓글 5


혹시나 아직 플그래밍 입문이거나 한참 하고있는 넘들중에


 

쿼리 짤때 동적쿼리로 좀 짜지 마라 두번짜지 마라 세번짜지 마라


 

아오 조ㄹ 라 빡쳐서 ㄴㅣㅁㅣ 아오 이런 수박


 

이전에 프로젝트에서 한 초보 코더랑 나름 10년이상 짬밥있다는 차장이 플젝트 님 내에서 한 업무 팀맡아서 하던거 두사람다 나가서


물려 받았는데 프로시져 하나 뜯을때마다 욕이 절로나온다


유지보수 할꺼 생각해서라도 동적쿼리 짜면 진짜 뒤진다


짠사람도 모른다 볼사람도 모른다


 

한눈에 들어오는게 없다 니미..


 

어디가 FROM 절이고 어디가 웨어절이고 아놔 미나어미아ㅓ빚럽


 

절때 동적쿼리 쓰지 말아라.....플그래밍 입문자들 동적쿼리 알려줘도 절대좀 쓰지마라


 

어쩔수 없다고 동적 쿼리 짜라는것도 잘찾아보면 답 없는거 없다 정적 쿼리좀 쓰자 제발


 

CREATE OR REPLACE PROCEDURE NEOE.UP_CG_C_CUST_PRE_SELECT1 (
    P_CD_COMPANY          IN    VARCHAR2    DEFAULT NULL,           --  회사코드
    P_DT_SPLY_FROM        IN    VARCHAR2    DEFAULT \'00000000\',     --  공급일자
    P_DT_SPLY_TO          IN    VARCHAR2    DEFAULT \'99999999\',     --  공급일자
    P_CD_ZONE             IN    VARCHAR2    DEFAULT NULL,           --  지역관리소   
    P_CHA_ISPT            IN    VARCHAR2    DEFAULT NULL,           --  차수   
    P_GB_PAYTM            IN    VARCHAR2    DEFAULT NULL,           --  납기구분    
    P_GB_AREA             IN    VARCHAR2    DEFAULT \'\',             --  순로구분
    P_CD_AREA_ISPT        IN    VARCHAR2    DEFAULT \'\',             --  검침구역
    P_CD_DONG             IN    VARCHAR2    DEFAULT \'\',             --  법정동
    P_CD_BLD              IN    VARCHAR2    DEFAULT \'\',             --  건물
    P_GB_HS               IN    VARCHAR2    DEFAULT \'\',             --  주택구분
    P_YN_EMP              IN    VARCHAR2    ,                       --    관리담당자(Y:유, N:무, 공백)     
    P_GB_ISPT             IN    VARCHAR2    ,                       --    안전점검
    RC1                   OUT   SYS_REFCURSOR
)
AS
/*******************************************
**  System          : -- 통합정보시스템
**  Sub System      : 고객관리 > 고객정보
**  Page            : 검침및 점검담당자 등록(건물 조회)
**  Desc            : UP_CG_C_CUST_PRE_SELECT1
**  Return Values
**  작    성    자  : choi
**  작    성    일  : 2010.05.08
**  수    정    자  :
********************************************
** Change History
*********************************************
*********************************************/
V_SELECT VARCHAR2(3000);

V_WHERE1 VARCHAR2(3000);
V_WHERE2 VARCHAR2(2000);
V_WHERE3 VARCHAR2(1000);
V_ORDER  VARCHAR2(1000);

BEGIN
 
   
    --ELSE
    --END IF;
    V_SELECT :=V_SELECT ||\'SELECT   A.CD_COMPANY, A.CD_ZONE,A.CD_DONG,A.CD_BLD,A.NM_BLD, A.NM_TERR, \'\'\'\' AS ERR_MSG, A.CNT, \';
    V_SELECT :=V_SELECT ||\'         A.NEW_ADDR,A.OLD_ADDR,CD_TERR, CD_TERR AS OLD_TERR ,GB_AREA ,GB_PAYTM ,CHK, \'\'\' || P_CHA_ISPT || \'\'\' AS CHA_ISPT,\';
   
    IF P_GB_AREA = \'01\'  THEN  --검침
      V_SELECT :=V_SELECT ||\'       FN_CG_GET_NM(A.CD_COMPANY,\'\'CG_C_CHARG\'\',A.CD_ZONE,\'\'01\'\',A.OLD_TERR) NM_OLD_TERR\'; 
   
    ELSE
       V_SELECT :=V_SELECT ||\'      FN_CG_GET_NM(A.CD_COMPANY,\'\'CG_C_CHARG\'\',A.CD_ZONE,\'\'02\'\',A.OLD_TERR) NM_OLD_TERR\';
    END IF;
    V_SELECT :=V_SELECT ||\'     FROM ( SELECT   A.CD_COMPANY, A.CD_ZONE,\';                              
    V_SELECT :=V_SELECT ||\'                     A.CD_DONG,A.CD_BLD,B.NM_BLD, COUNT(A.NO_CUST) AS CNT, \';
 
    V_SELECT :=V_SELECT ||\'                     C.ADDR_SIDO || \'\' \'\'|| C.ADDR_GUGUN ||  \'\' \'\'|| B.ADDR_ROAD || \'\' \'\' ||B.L_ADDR  || DECODE(NVL(B.S_ADDR,\'\' \'\'), \'\' \'\', \'\'\'\', \'\'-\'\' || B.S_ADDR)  AS NEW_ADDR,\';
    V_SELECT :=V_SELECT ||\'                     C.ADDR_DONG || \'\' \'\'|| B.L_LOT || \'\' \'\'|| DECODE(NVL(B.S_LOT,\'\' \'\'), \'\' \'\', \'\'\'\', \'\'-\'\' || B.S_LOT) AS OLD_ADDR,\';
    IF P_GB_AREA = \'01\'  THEN  --검침
        V_SELECT :=V_SELECT ||\'                 MAX(A.CD_TERR_ISPT) AS CD_TERR,\';
        V_SELECT :=V_SELECT ||\'                 FN_CG_GET_NM(A.CD_COMPANY,\'\'CG_C_CHARG\'\',A.CD_ZONE,\'\'01\'\',MAX(A.CD_TERR_ISPT)) NM_TERR, \';
        V_SELECT :=V_SELECT ||\'                 decode(NVL(MAX(A.CD_TERR_ISPT),\'\' \'\'), \'\' \'\',\';
        V_SELECT :=V_SELECT ||\'                                                       FN_CG_GET_C_FIND_TERR(A.CD_COMPANY,\'\'1\'\',\'\'\'||P_GB_PAYTM ||\'\'\',A.CD_BLD)\';
        V_SELECT :=V_SELECT ||\'                                                       ,MAX(A.CD_TERR_ISPT)) OLD_TERR,\';
        V_SELECT :=V_SELECT ||\'                 \'\'01\'\' GB_AREA,\';
        V_SELECT :=V_SELECT ||\'                 \'\'\'||P_GB_PAYTM ||\'\'\' as GB_PAYTM,\';
    ELSE
        V_SELECT :=V_SELECT ||\'                 MAX(A.CD_TERR_INSP) AS CD_TERR,\';
        V_SELECT :=V_SELECT ||\'                 FN_CG_GET_NM(A.CD_COMPANY,\'\'CG_C_CHARG\'\',A.CD_ZONE,\'\'02\'\', MAX(A.CD_TERR_INSP)) NM_TERR,\';
        V_SELECT :=V_SELECT ||\'                 decode(NVL( MAX(A.CD_TERR_INSP),\'\' \'\'), \'\' \'\',\';
        V_SELECT :=V_SELECT ||\'                 FN_CG_GET_C_FIND_TERR(A.CD_COMPANY,\'\'2\'\',\'\'\'||P_GB_PAYTM ||\'\'\',A.CD_BLD)\';
        V_SELECT :=V_SELECT ||\'                 , MAX(A.CD_TERR_INSP)) OLD_TERR,\';
        V_SELECT :=V_SELECT ||\'                 \'\'02\'\' GB_AREA,\';
        V_SELECT :=V_SELECT ||\'                 \'\'\'||P_GB_PAYTM ||\'\'\' as GB_PAYTM,\';
    END IF;
  
    V_SELECT :=V_SELECT ||\'                     \'\'N\'\' CHK\';
    V_SELECT :=V_SELECT ||\'               FROM  CG_C_CUST A,CG_Z_BLD  B ,CG_Z_DONG C, CG_U_USER D \';
   
    V_WHERE1 := \'                         WHERE A.CD_COMPANY     = \'\'\'||P_CD_COMPANY ||\'\'\'\'; 
    V_WHERE1 := V_WHERE1  ||\'               AND NVL(TRIM(A.DT_MAINCHG), \'\'\'|| P_DT_SPLY_FROM ||\'\'\')     >=  \'\'\'||P_DT_SPLY_FROM ||\'\'\'\';
    V_WHERE1 := V_WHERE1  ||\'               AND NVL(TRIM(A.DT_MAINCHG), \'\'\'|| P_DT_SPLY_FROM ||\'\'\')     <=  \'\'\'|| P_DT_SPLY_TO||\'\'\'\';
    V_WHERE1 := V_WHERE1  ||\'               AND A.CHA_ISPT     =   \'\'\'|| P_CHA_ISPT||\'\'\'\';
    V_WHERE1 := V_WHERE1  ||\'               AND  A.CD_COMPANY = C.CD_COMPANY\';
    V_WHERE1 := V_WHERE1  ||\'               AND  A.CD_DONG    = C.CD_DONG\';
    V_WHERE1 := V_WHERE1  ||\'               AND  A.CD_COMPANY = B.CD_COMPANY\';
    V_WHERE1 := V_WHERE1  ||\'               AND  A.CD_BLD     = B.CD_BLD\';
    V_WHERE1 := V_WHERE1  ||\'               AND  A.CD_COMPANY = D.CD_COMPANY(+)\';
    V_WHERE1 := V_WHERE1  ||\'               AND  A.CD_FCLT_BLD     = D.CD_FCLT_BLD(+)\';
    V_WHERE1 := V_WHERE1  ||\'               AND  A.ST_CUST     NOT IN  (\'\'40\'\', \'\'34\'\')  \';
    IF P_GB_AREA = \'02\' THEN   
        V_WHERE1 := V_WHERE1  ||\'           AND  D.GB_FCLT <> \'\'10\'\' \';
    END IF;
   
    IF NVL(P_GB_PAYTM, \' \') <> \' \' THEN
    V_WHERE1 := V_WHERE1  ||\'               AND A.GB_PAYTM   IN ( SELECT CD_SYSDEF \';
    V_WHERE1 := V_WHERE1  ||\'                                       FROM MA_CODEDTL  \';
    V_WHERE1 := V_WHERE1  ||\'                                       WHERE CD_COMPANY =\'\'\'||P_CD_COMPANY ||\'\'\'\';
    V_WHERE1 := V_WHERE1  ||\'                                       AND CD_FIELD    = \'\'CG_C_00015\'\'\';
    V_WHERE1 := V_WHERE1  ||\'                                       AND CD_FLAG2    =   \'\'\'|| P_GB_PAYTM||\'\'\'\';
    V_WHERE1 := V_WHERE1  ||\'                                                                                   ) \' ;
    END IF;
    IF NVL(P_CD_ZONE,\' \') != \' \' THEN
       V_WHERE1 := V_WHERE1  ||\'            AND A.CD_ZONE        =\'\'\'||   P_CD_ZONE || \'\'\'\';
    END IF;
   
    IF NVL(P_CD_DONG,\' \') != \' \' THEN
       V_WHERE1 := V_WHERE1  ||\'            AND A.CD_DONG        =\'\'\'||   P_CD_DONG || \'\'\'\';
    END IF;
   
    IF NVL(P_CD_BLD,\' \') != \' \' THEN
       V_WHERE1 := V_WHERE1  ||\'            AND A.CD_BLD        =\'\'\'||   P_CD_BLD || \'\'\'\';
    END IF;

    IF NVL(P_GB_HS,\' \') != \' \' THEN
       V_WHERE1 := V_WHERE1  ||\'            AND B.GB_HS         =\'\'\'||   P_GB_HS || \'\'\'\';
    END IF;
       
    IF P_GB_AREA = \'01\' THEN

        IF NVL(P_CD_AREA_ISPT,\' \')  != \' \' AND  P_CD_AREA_ISPT <> \'%\' THEN
        V_WHERE2:= V_WHERE2  ||\'            AND A.CD_TERR_ISPT = \'\'\' ||  P_CD_AREA_ISPT || \'\'\'\';
        END IF;
        IF NVL( P_YN_EMP ,\' \') =\'Y\' THEN--  관리담당자(Y:유, N:무, 공백)
         V_WHERE2:= V_WHERE2  ||\'           AND NVL(A.CD_TERR_ISPT, \'\' \'\') <> \'\' \'\'\';
        ELSIF NVL( P_YN_EMP ,\' \') =\'N\' THEN--  관리담당자(Y:유, N:무, 공백)
         V_WHERE2:= V_WHERE2  ||\'           AND NVL(A.CD_TERR_ISPT, \'\' \'\') = \'\' \'\'\';
        END IF;
    ELSIF P_GB_AREA = \'02\' THEN

        IF NVL(P_CD_AREA_ISPT,\' \')  != \' \'  AND  P_CD_AREA_ISPT <> \'%\' THEN

         V_WHERE2:= V_WHERE2  ||\'           AND A.CD_TERR_INSP = \'\'\' ||  P_CD_AREA_ISPT || \'\'\'\';

        END IF;
        IF NVL( P_YN_EMP ,\' \') =\'Y\' THEN --  관리담당자(Y:유, N:무, 공백)
        V_WHERE2:= V_WHERE2  || \'           AND NVL(A.CD_TERR_INSP, \'\' \'\') <> \'\' \'\'\';
        ELSIF NVL( P_YN_EMP ,\' \') =\'N\' THEN --  관리담당자(Y:유, N:무, 공백)
        V_WHERE2:= V_WHERE2  ||\'            AND NVL(A.CD_TERR_INSP, \'\' \'\') = \'\' \'\'\';
        V_WHERE2:= V_WHERE2  ||\'            AND D.GB_FCLT <> \'\'10\'\' \';
        END IF;
       
        V_WHERE2:= V_WHERE2  || \'           AND B.YM_INSP1 LIKE \'\'\' || P_GB_ISPT || \'\'\' || \'\'%\'\' \';
--        IF (NVL(P_GB_ISPT,\'\') <> \'\') THEN
--            V_WHERE2:= V_WHERE2  || \' AND B.YM_INSP1 = \'\'\' || P_GB_ISPT || \'\'\' \';
--        END IF;
    END IF;
 
    V_WHERE2 := V_WHERE2  ||\'               GROUP BY  A.CD_COMPANY, A.CD_ZONE,A.CD_DONG,A.CD_BLD, B.NM_BLD, C.ADDR_SIDO , C.ADDR_GUGUN,\';
    V_WHERE2 := V_WHERE2  ||\'                           B.ADDR_ROAD ,B.L_ADDR, B.S_ADDR,\';
    V_WHERE2 := V_WHERE2  ||\'                           C.ADDR_DONG, B.L_LOT ,B.S_LOT, DECODE(\'\'\' || P_GB_AREA || \'\'\', \'\'01\'\', A.CD_TERR_ISPT, A.CD_TERR_INSP) )A \';
    V_ORDER := \'                    ORDER BY A.CD_COMPANY,A.CD_DONG,A.CD_BLD \' ;

--   RAISE_APPLICATION_ERROR (-20001, \'UP_CG_C_CUST_SELECT10\' || \'=\' ||  V_WHERE1);
--   RETURN;
DELETE FROM CG_C_TEST;
INSERT INTO CG_C_TEST
(
    TEST_SQL
)
VALUES
(
V_SELECT ||V_WHERE1 ||V_WHERE2 || V_WHERE3 || V_ORDER
);
    OPEN RC1 FOR
    V_SELECT ||V_WHERE1 ||V_WHERE2 || V_WHERE3 || V_ORDER;
  
 
    RETURN;
EXCEPTION
        WHEN OTHERS
        THEN
            RAISE_APPLICATION_ERROR (-20001, \'UP_CG_C_CUST_PRE_SELECT1\' || SQLERRM);
END UP_CG_C_CUST_PRE_SELECT1;


 


 

혹여나 나중에 내 아랫사람이 이따구로 쿼리 코딩하다가 걸리면 진짜 뒤진다

추천 비추천

0

고정닉 0

0

원본 첨부파일 1

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 해외에서 겪는 불합리한 대우에 대응 잘 할 것 같은 스타는? 운영자 25/11/03 - -
AD 저녁 뭐먹지? 오늘의 메뉴 추천! 운영자 25/10/31 - -
296660 수능끝난 고3 할짓없어서 오토핫키 좀 배우는데 질문점요 [2] 수능끝난고3(222.112) 11.12.30 119 0
296659 여긴 다 천재형들뿐이니까 시간남는형은 이 문제좀 봐줘염 기본문제임 [5] 니애미(61.109) 11.12.30 116 0
296656 윈api로 3d엔진 만들어볼까 [2] elwlwlwk갤로그로 이동합니다. 11.12.30 95 0
296654 우왕... html5 잠깐 공부했는데... 대박이다... [1] 흠냐(221.147) 11.12.30 169 0
296649 그럭저럭대학 컴공 vs 유동(125.142) 11.12.30 99 0
296647 퇴사한다고 했는데 1시간 넘게 설교 들으면 내가 인재라서 붙잡을려는거냥 [6] 므해?갤로그로 이동합니다. 11.12.30 185 0
296645 와 컴터 고쳤다! [3] 외계달팽갤로그로 이동합니다. 11.12.30 97 0
296644 이번 주말은 연말더하기 신년이네 간지어갤로그로 이동합니다. 11.12.30 40 0
296643 컴퓨터과학과 우선선발 됐는데 [2] 종간이갤로그로 이동합니다. 11.12.30 114 0
296641 나만 TV를 안 보는 게 아니었어 [1] 분당살람갤로그로 이동합니다. 11.12.30 73 0
296640 수학을 다시 공부하기로 했습니다. 늦깎이 입니다. 도와주세요. [1] 홍성대(182.215) 11.12.30 125 0
296639 한국엔 대단한 사람들이 참 많아 [1] 분당살람갤로그로 이동합니다. 11.12.30 146 0
296638 프갤형들 로그파일에 아이피도 찍힘? [1] 뻘찔죶중딩갤로그로 이동합니다. 11.12.30 71 0
296637 형들 지방 국립대컴공은 별로야?? [5] 유동(125.142) 11.12.30 180 0
296636 ^-^ [5] 바보플머(222.121) 11.12.30 110 0
296635 개인사업 하기 전후 비교 [2] .3(36.38) 11.12.30 146 0
296633 프로그램 뭐있냐. 버그 안나고 돌아가기만 하면되지 [2] White_Wolf(58.102) 11.12.30 57 0
296632 다들 칼퇴해서 그런가 [1] Dawnwalkre갤로그로 이동합니다. 11.12.30 30 0
296631 HTML5 발전방향은? 데헷(119.82) 11.12.30 48 0
296629 다들 퇴근하네 부럽다... [2] 쿄스케갤로그로 이동합니다. 11.12.30 62 0
296628 현업에 종사하시는 웹 프로그래머 형님들... 도와 주세요 [3] 안성철(211.197) 11.12.30 164 0
296627 개발은 97%의 디버깅과 3%의 코딩으로 이루어진다 [3] ㅁㄴㄻㄹ갤로그로 이동합니다. 11.12.30 204 0
296626 메일 왔다 [1] ㅇㅇㅇ(59.150) 11.12.30 56 0
296625 형들 안녕? [5] 좋은아버지갤로그로 이동합니다. 11.12.30 99 0
296624 잘생겨지고 싶다.. [1] Lover♥갤로그로 이동합니다. 11.12.30 49 0
296621 제로보드 그누보드 같은 보드를 자체 제작하기 힘든가요? [3] (49.143) 11.12.30 91 0
296620 아 형들 저 퇴근해요ㅜ [1] 개떙보갤로그로 이동합니다. 11.12.30 55 0
296619 프로그래머들이 나중에 치킨집 전향한다는게 [3] 쿠마코갤로그로 이동합니다. 11.12.30 179 0
296618 다음학기 그래픽스 과목 듣는데.... 땡칠도사갤로그로 이동합니다. 11.12.30 86 0
296616 아직도 메일 5분마다 확인하는 사람 있냐?? [3] ㅇㅇㅇ(59.150) 11.12.30 91 0
296614 정상근무라는 회사 공지에 분노한 우리팀은 퀘이크 라이브를 하기로 했다 [2] 거칠게갤로그로 이동합니다. 11.12.30 109 0
296613 요즘... 박카스 박스로 갖다놓고 먹고 있음... ㅠㅠ [5] 흠냐(221.147) 11.12.30 92 0
296612 메일왔다~~~ ㅃㅃㅃㅃㅃ ㅇㅇㅇ(59.150) 11.12.30 43 0
296611 퀘이크라이브라고 아는 횽 있어?? 거칠게갤로그로 이동합니다. 11.12.30 49 0
296610 i5 vs i7 [7] 알오티씨플머갤로그로 이동합니다. 11.12.30 197 0
296607 이거때문에 머리 싸매고 있음 [6] [성대아싸]갤로그로 이동합니다. 11.12.30 196 0
296606 퍼온거. iljeomobolt갤로그로 이동합니다. 11.12.30 42 0
296605 점심시간 끝나면 [1] ㅇㅇㅇ(59.150) 11.12.30 36 0
296603 집청소나 해야겠다 외계달팽갤로그로 이동합니다. 11.12.30 40 0
296599 오늘 회사 출근 안하는데... 집컴터가 고장닜다 [3] 외계달팽갤로그로 이동합니다. 11.12.30 78 0
296598 예전 인조이재팬 같은 사이트 만들기 힘드나요? [1] (49.143) 11.12.30 47 0
296596 내년에도 절대 망하거나 짤릴 일 없는 직종 목록 [1] 거칠게갤로그로 이동합니다. 11.12.30 125 0
296595 깨작깨작.. [2] [성대아싸]갤로그로 이동합니다. 11.12.30 76 0
296593 신의 직장에 들어가고 싶다. 하악하악 [3] 거칠게갤로그로 이동합니다. 11.12.30 162 0
296592 열혈강의로 c언어 3월 달까지 공부하려고 하는데 [3] 프로갤러(119.198) 11.12.30 150 0
296591 에잇 시밤 점심시간이 다가오는데 공지가 없네 정상 근무 확정인가 보다 [1] 거칠게갤로그로 이동합니다. 11.12.30 44 0
296590 난 내년부터 회사 다니면서 전산직 공뭔 시험 몰래 볼꺼다 ㅋㅋㅋ [1] 거칠게갤로그로 이동합니다. 11.12.30 203 0
296587 어제 IT뉴스보다가 댓글을 발견했는데 [2] 거칠게갤로그로 이동합니다. 11.12.30 83 0
296585 내년 한국 IT 전망을 어찌 보는가염? [4] 거칠게갤로그로 이동합니다. 11.12.30 206 0
296584 기분상했으면 죄송해여 ㅜㅜ.. [2] 으아아아(125.142) 11.12.30 55 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2