2013. 2. 1.

다른계정의 모든 테이블명과 동일하게 뷰 만들기 (심볼릭링크?)


만약 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 개의 댓글:

댓글 쓰기

Copyright © 화랑천's 소소하기

Distributed By My Blogger Themes | Blogger Theme By NewBloggerThemes 위로