나는 해결책을 제시 할 수있는 방법을 제시합니다. 이
declare v_table_name varchar2(30) := 'HIST';
cursor cur is select column_name, data_type
from all_tab_columns
where table_name = v_table_name
and column_name != 'COL1'
order by column_id;
:
1)이 같은 커서를 만들기 ... 지금 내가 할 수있는 시간이 없기 때문에이 코드는 정말 테스트되지 않은 상태입니다,하지만 난 당신을 도울 수 있기를 바랍니다 당신은 테이블의 모든 현재 컬럼을 얻을 수있다. 물론, 당신이하는 모든 테이블을 고려할 것이다.
2) 커서를 가져 와서 동적 삽입 문을 만들어야합니다. 이런 식으로 뭔가 :
declare v_column_list varchar2(500);
declare v_values_list varchar2(500);
for i in cur loop
v_column_list := v_column_list||','||i.column_name;
v_values_list := v_values_list||', :new.'||i.column_name;
end loop;
3) 동적 삽입 문을 작성하고 실행 :이 도움이
declare csql varchar2(500);
csql := 'INSERT INTO '||v_table_name||' ('||v_column_list||') VALUES ('||v_values_list||')';
EXECUTE IMMEDIATE (csql);
희망 ...
없음; 없습니다 [관련 있지만 꽤 중복 질문] (http://stackoverflow.com/q/9133120/266304). 각 변경 후에 테이블 정의에서 트리거 작성 스크립트를 생성 할 수 있지만 명시 적으로 나열된 새 컬럼을 사용하여 다시 작성해야합니다. –