안녕하세요. 테이블을 카운트하여 저장하는 쿼리를 작성하고 있습니다.
저장 대상 : 로컬 디비, 원격지 디비
DECLARE v_ow varchar2(50); v_tn varchar2(50); cursor cr_gt is select distinct owner,table_name from all_tables where owner in ('USER1','USER2','USER3'); begin open get_tables; loop fetch cr_gt into v_tn,v_ow; EXIT WHEN get_tables%NOTFOUND; execute immediate 'INSERT INTO sum_table SELECT ''distinct1'',''' || v_ow || ''' , ''' || v_tn ||''',COUNT(*),sysdate FROM ' || v_ow||'.'||v_tn||'@12c'; execute immediate 'INSERT INTO sum_table SELECT ''distinct2'',''' || v_ow || ''' , ''' || v_tn ||''',COUNT(*),sysdate FROM ' || v_ow||'.'||v_tn; end loop; commit; CLOSE cr_gt; END; / |
문제는 로컬 디비와 원격지 디비에 테이블이 동일하지 않습니다.(같은 테이블도 있지만 다른 테이블도 존재)
그래서 "(ORA-00942) table or view does not exist" 에러가 발생합니다.
위 pl/sql은 모두 같은 테이블명을 지닐때는 문제가 없습니다만, 각각 고유의 테이블이 존재한다면 에러가 발생합니다.
예외 처리를 어떻게 하는 것이 좋을지 조언 부탁드립니다.