336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
스프링에서 VO와 Mybatis 쿼리를 만들 때 이용하려고 만든 쿼리입니다.
사용한지 얼마 안되어 버그가 있을 수 있으므로 발견 시 댓글 부탁합니다.


/* 테이블의 컬럼명|데이터타입|주석 조회 */

SELECT B.COLUMN_NAME, A.DATA_TYPE, A.DATA_LENGTH, B.COMMENTS
FROM   ALL_TAB_COLUMNS A
     , ALL_COL_COMMENTS B
WHERE  A.TABLE_NAME = B.TABLE_NAME
AND    A.COLUMN_NAME = B.COLUMN_NAME
AND    A.OWNER = '[오너]'
AND    B.OWNER = '[오너]'
AND    A.TABLE_NAME = '[테이블]'
ORDER BY A.COLUMN_ID

/* 테이블의 컬럼들을 SELECT 문으로 조회 */

SELECT LISTAGG(B.COLUMN_NAME, ', ') WITHIN GROUP(ORDER BY A.COLUMN_ID)
FROM   ALL_TAB_COLUMNS A
     , ALL_COL_COMMENTS B
WHERE  A.TABLE_NAME = B.TABLE_NAME
AND    A.COLUMN_NAME = B.COLUMN_NAME
AND    A.OWNER = '[오너]'
AND    B.OWNER = '[오너]'
AND    A.TABLE_NAME = '[테이블]'
ORDER BY A.COLUMN_ID

/* 테이블의 컬럼들을 VO 항목으로 변경 */
/* 개인적으로는 이클립스의 Database Development의 text mode를 이용한다. */

SELECT RPAD(' ', 3) || '/* ' || NVL(B.COMMENTS, B.COLUMN_NAME) || ' */' || CHR(13) ||  
   RPAD(' ', 4) || 'private ' || 
   CASE 
   WHEN A.DATA_TYPE = 'VARCHAR2' THEN 'String'
   WHEN A.DATA_TYPE = 'NUMBER' THEN 'int'
   WHEN A.DATA_TYPE = 'FLOAT' THEN 'double'
   /*WHEN A.DATA_TYPE = 'CHAR' AND A.DATA_LENGTH = 1 THEN 'boolean'*/
   WHEN A.DATA_TYPE = 'CHAR' AND A.DATA_LENGTH > 1 THEN 'String'
   ELSE 'Object'
   END ||
   ' ' || 
   CONCAT
   (
    LOWER(SUBSTR(B.COLUMN_NAME, 1, 1)), 
    SUBSTR(REGEXP_REPLACE(INITCAP(B.COLUMN_NAME), ' |_'), 2)
   ) || CHR(59) || CHR(13)
FROM   ALL_TAB_COLUMNS A
     , ALL_COL_COMMENTS B
WHERE  A.TABLE_NAME = B.TABLE_NAME
AND    A.COLUMN_NAME = B.COLUMN_NAME
AND    A.OWNER = '[오너]'
AND    B.OWNER = '[오너]'
AND    A.TABLE_NAME = '[테이블]'
ORDER BY A.COLUMN_ID


posted by 어린왕자악꿍