'MAKE QUERY'에 해당되는 글 1건

  1. 2013.05.30 쿼리생성 하는 쿼리

쿼리생성 하는 쿼리

2013. 5. 30. 17:13

WITH

TAB_COMMENTS_CAST AS (

        SELECT * 

          FROM USER_TAB_COMMENTS

         WHERE TABLE_NAME ='XXSB_DCT_SM_USER' --여기에 테이블 명을 입력하세요 접속한 USER 테이블만 가능

        ),

TAB_COLUMNS_CAST AS (

        SELECT A.COLUMN_NAME

             , A.COLUMN_ID

          FROM USER_TAB_COLUMNS     A

             , TAB_COMMENTS_CAST    B

         WHERE A.TABLE_NAME = B.TABLE_NAME

         ORDER BY A.COLUMN_ID

        ),

PK_COLUMNS_CAST AS (

        SELECT A.*

          FROM USER_IND_COLUMNS   A

             , USER_CONSTRAINTS   B

             , TAB_COMMENTS_CAST  C

         WHERE A.TABLE_NAME = B.TABLE_NAME

           AND A.INDEX_NAME  = B.CONSTRAINT_NAME

           AND B.CONSTRAINT_TYPE = 'P'

           AND A.TABLE_NAME = C.TABLE_NAME

         ORDER BY A.COLUMN_POSITION

                 

        )

  -------------

  --SELECT 시작

  -------------

  --SELECT COMMENTS || ' SELECT' FROM TAB_COMMENTS_CAST UNION ALL

  SELECT DECODE(ROWNUM, 1,'SELECT ','     ,')|| DECODE(SUBSTR(COLUMN_NAME, LENGTH(COLUMN_NAME)-1,2),'YN','DECODE('||COLUMN_NAME||',''1'',''1'',''0'') AS '||COLUMN_NAME, COLUMN_NAME)

    FROM TAB_COLUMNS_CAST 

   WHERE COLUMN_NAME NOT IN('INSERT_ID','INSERT_IP','INSERT_PGM','INSERT_DATE','UPDATE_ID','UPDATE_IP','UPDATE_PGM','UPDATE_DATE')

  UNION ALL

  SELECT '  FROM '||TABLE_NAME  FROM TAB_COMMENTS_CAST

  UNION ALL

  SELECT DECODE(A.COLUMN_POSITION, 1,' WHERE ','   AND ') || A.COLUMN_NAME || LPAD(' = ',B.MAXLEN-LENGTH(A.COLUMN_NAME),' ') || '#'|| A.COLUMN_NAME ||'#' 

    FROM PK_COLUMNS_CAST A

       , (

            SELECT MAX(LENGTH(COLUMN_NAME))+3 AS MAXLEN FROM PK_COLUMNS_CAST

         ) B

  UNION ALL SELECT '' FROM DUAL UNION ALL SELECT '' FROM DUAL 

  -------------

  --INSERT 시작

  -------------

  --UNION ALL SELECT COMMENTS || ' INSERT' FROM TAB_COMMENTS_CAST

  UNION ALL

  SELECT 'INSERT INTO '||TABLE_NAME FROM TAB_COMMENTS_CAST

  UNION ALL

  SELECT '(' FROM DUAL

  UNION ALL

  SELECT DECODE(COLUMN_ID, 1,'    ',',')|| COLUMN_NAME

    FROM TAB_COLUMNS_CAST

  UNION ALL

  SELECT ')' FROM DUAL

  UNION ALL

  SELECT 'VALUES' FROM DUAL

  UNION ALL

  SELECT '(' FROM DUAL

  UNION ALL

  SELECT DECODE(COLUMN_ID, 1,'    ','  ,')|| CASE WHEN COLUMN_NAME IN('INSERT_DATE','UPDATE_DATE') THEN 'SYSDATE' ELSE DECODE(SUBSTR(COLUMN_NAME, LENGTH(COLUMN_NAME)-1,2),'YN','DECODE('||'#'||COLUMN_NAME||'#'||',''1'',''1'',''2'')', '#'||COLUMN_NAME||'#') END

    FROM TAB_COLUMNS_CAST

  UNION ALL

  SELECT ')' FROM DUAL

  UNION ALL SELECT '' FROM DUAL UNION ALL SELECT '' FROM DUAL 

  -------------

  --UPDATE 시작

  -------------

  --UNION ALL SELECT COMMENTS || ' UPDATE' FROM TAB_COMMENTS_CAST

  UNION ALL

  SELECT 'UPDATE '||TABLE_NAME FROM TAB_COMMENTS_CAST

  UNION ALL

  SELECT DECODE(ROWNUM, 1,'   SET ',',') || A.COLUMN_NAME || LPAD(' = ', B.MAXLEN-LENGTH(A.COLUMN_NAME),' ')

        || DECODE(A.COLUMN_NAME,'UPDATE_DATE','SYSDATE',DECODE(SUBSTR(A.COLUMN_NAME, LENGTH(A.COLUMN_NAME)-1,2),'YN','DECODE(#'||A.COLUMN_NAME||'#,''1'',''1'',''2'')', '#'||A.COLUMN_NAME||'#') )

    FROM ( 

            SELECT A.COLUMN_NAME

              FROM TAB_COLUMNS_CAST  A

                 , PK_COLUMNS_CAST      B

             WHERE A.COLUMN_NAME = B.COLUMN_NAME(+)

               AND B.COLUMN_NAME IS NULL

               AND A.COLUMN_NAME NOT IN ('INSERT_ID','INSERT_IP','INSERT_PGM','INSERT_DATE')

             ORDER BY A.COLUMN_ID

          ) A

        ,(

            SELECT MAX(LENGTH(A.COLUMN_NAME))+3 AS MAXLEN

              FROM TAB_COLUMNS_CAST  A

                 , PK_COLUMNS_CAST   B

             WHERE A.COLUMN_NAME = B.COLUMN_NAME(+)

               AND B.COLUMN_NAME IS NULL

               AND A.COLUMN_NAME NOT IN ('INSERT_ID','INSERT_IP','INSERT_PGM','INSERT_DATE')

         ) B

  UNION ALL

  SELECT DECODE(A.COLUMN_POSITION, 1,' WHERE ','   AND ') || A.COLUMN_NAME || LPAD(' = ', B.MAXLEN-LENGTH(A.COLUMN_NAME),' ') || '#'|| A.COLUMN_NAME ||'#' 

    FROM PK_COLUMNS_CAST A

       , (

            SELECT MAX(LENGTH(COLUMN_NAME))+3 AS MAXLEN FROM PK_COLUMNS_CAST

         ) B

  UNION ALL SELECT '' FROM DUAL UNION ALL SELECT '' FROM DUAL 

  -------------

  --DELETE 시작

  -------------

  --UNION ALL SELECT COMMENTS || ' DELETE' FROM TAB_COMMENTS_CAST

  UNION ALL

  SELECT 'DELETE FROM '||TABLE_NAME FROM TAB_COMMENTS_CAST

  UNION ALL

  SELECT DECODE(A.COLUMN_POSITION, 1,' WHERE ','   AND ') || A.COLUMN_NAME || LPAD(' = ',B.MAXLEN-LENGTH(A.COLUMN_NAME),' ') || '#'|| A.COLUMN_NAME ||'#' 

    FROM PK_COLUMNS_CAST A

       , (

            SELECT MAX(LENGTH(COLUMN_NAME))+3 AS MAXLEN FROM PK_COLUMNS_CAST

         ) B



'오라클' 카테고리의 다른 글

오라클 쿼리로 사업자번호 유효성 검사  (0) 2013.09.25
컬럼 문자 인지 숫자인지 확인.  (0) 2013.09.25
list 의 특정 컬럼 을 한줄로 표현 하기 .  (0) 2013.05.10
jsp BLOb 타입 다운로드  (0) 2013.03.13
JOIN!!  (0) 2013.02.06
Posted by 사라링

BLOG main image
.. by 사라링

카테고리

사라링님의 노트 (301)
JSP (31)
J-Query (41)
JAVA (24)
VM-WARE (0)
디자인패턴 (1)
스크랩 (0)
스트러츠 (3)
안드로이드 (11)
오라클 (45)
우분투-오라클 (1)
이클립스메뉴얼 (6)
스프링3.0 (23)
자바스크립트 (10)
HTML5.0 (17)
정보처리기사 (1)
기타(컴퓨터 관련) (1)
문제점 해결 (3)
프로젝트 (2)
AJAX (4)
하이버네이트 (3)
트러스트폼 (11)
Jeus (2)
재무관리(회계) (5)
정규식 (5)
아이바티스 (8)
취미 (2)
소프트웨어 보안 관련모음 (0)
정보보안기사 (6)
C언어 베이직 및 프로그램 (3)
보안 관련 용어 정리 (2)
넥사크로 (6)
Total :
Today : Yesterday :