a테이블을 a_OLD로 테이블만 복사후
컬럼을 추가하여
a_cdc로 생성시 a_cdc테이블의 컬럼이 a컬럼과 순서가 완전 뒤바뀝니다
컬럼 순서가 변경되지않는방법이 있을까요?
아래와 같이 스크립트를 만들어서 사용하려고합니다.
select
'create','table',rtrim(table_name,'_OLD'),'as','select'
,'cast(',chr('39')||'seq_no'||chr('39'),'as number(20)) as seq_no,'
,listagg(column_name,','),','
,'cast(',chr('39')||'db_user'||chr('39'),'as varchar(45)) as db_user,'
,'from',
table_name||';'
from
all_tab_columns
where table_name like'%_OLD'
group by table_name;
구문이 뭔가 많이 이상하네요.
구문 실행이 안될 텐데? 정렬이 이상하다는게 말이 안되는데요?
seq_no 컬럼을 맨 앞에 추가하려고 하는 건가요?
스크립트가 이상하여 수정했습니다.
seq_no를 맨앞에두고 기존 테이블컬럼을 중간에두며 마지막에 컬럼을 더 추가하려고합니다.
SELECT 'CREATE TABLE '
|| REPLACE(table_name, '_OLD', '_CDC')
|| ' AS SELECT'
|| ' CAST(null AS NUMBER(20)) seq_no, '
|| LISTAGG(column_name, ', ') WITHIN GROUP(ORDER BY column_id)
|| ', CAST(null AS VARCHAR2(45)) db_user'
|| ' FROM ' || table_name || ';' sql
FROM user_tab_columns
WHERE table_name LIKE '%_OLD'
GROUP BY table_name
;
답변 감사드립니다.
within group을 추가하였더니 바로 해결되었습니다.