만약 AAA 라는 다른 계정의 테이블을 조회하고자 한다면
쿼리의 테이블명앞에 AAA.테이블명 처럼 명시해야만 자신의 계정 테이블과 구분이 가능하다. 하지만 두개의 다른 계정에서 각각 같은 쿼리로 사용하고 싶을때는 다음과 같이 처리하면 AAA.테이블명 을 그냥 테이블명 으로 심볼릭 링크 효과를 줄수 있다.
테이블의 수가 많으므로 다음처럼 쿼리로해결
select
'CREATE OR REPLACE FORCE VIEW ' ||table_name||' ('||column_name||') AS
SELECT '||column_name||' FROM AAA.'||table_name
from (
select table_name,
substr(xmlagg(
sys.XMLType.createXML(
'<'||flag||'>,' || column_name||'</'||flag||'>'
) order by column_id).extract('/a1/text()'), 2) column_name
from (select table_name
, column_name
, column_id
, nvl2(column_name, 'a' || row_number() over (partition by table_name, column_name order by column_id),
'a2') as flag
from cols
)
group by table_name
)
0 개의 댓글:
댓글 쓰기