본문 바로가기

Programming/MyBatis

MYBATIS INSERT 쿼리 자동생성 - 오라클

반응형
SMALL

SELECT 'INSERT INTO'
              ||' EMP'
              ||'('
              ||CC1
              ||')VALUES('
              ||CC2
              ||')'
FROM   (SELECT  LISTAGG(COLUMN_NAMES) WITHIN GROUP(ORDER BY COLUMN_ID)AS CC1,
                LISTAGG(COL_VALUES) WITHIN GROUP(ORDER BY COLUMN_ID)  AS CC2
       FROM     ( SELECT TABLE_NAME,
                        COLUMN_ID,
                        ''
                                ||COLUMN_NAME
                                ||',' COLUMN_NAMES,
                        '#{'
                                ||LOWER(SUBSTR(COLUMN_NAME,1,1))
                                ||SUBSTR(REPLACE(INITCAP(LOWER(COLUMN_NAME)),'_',''),2)
                                ||'},' AS COL_VALUES
                FROM    USER_TAB_COLS
                WHERE   TABLE_NAME = UPPER('EMP')
                )
       ) ;

 

 

//////////////////////////////////////////////////////////////////////

SELECT MAX(QUERY)
FROM   ( SELECT  'INSERT INTO '
                         ||TABLE_NAME
                         ||'('
                         ||TRIM(LISTAGG(COLUMN_NAMES,',') WITHIN GROUP (ORDER BY COLUMN_ID) OVER (PARTITION BY TABLE_NAME))
                         ||')VALUES('
                         ||TRIM(LISTAGG(COL_VALUES, ',') WITHIN GROUP (ORDER BY COLUMN_ID) OVER (PARTITION BY TABLE_NAME))
                         ||')' AS QUERY
       FROM     (SELECT TABLE_NAME,
                        COLUMN_ID,
                        ''
                                ||COLUMN_NAME COLUMN_NAMES,
                        '#'
                                ||lower(SUBSTR(COLUMN_NAME,1,1))
                                ||SUBSTR(REPLACE(INITCAP(LOWER(COLUMN_NAME)),'_',''),2)
                                ||'#' AS COL_VALUES
                FROM    USER_TAB_COLS
                WHERE   TABLE_NAME = UPPER('EMP')
                )
       );

반응형
LIST