2013-11-04 3 views
1

특정 소유자의 모든 테이블과 뷰를 표시하는 쿼리를 만들었습니다. 지금하고 싶지만 문제가있는 것은 행별로 두 번째 열의 필드가 "테이블"인지 "뷰"인지 여부를 나타내는 것입니다. 이것이 가능한가? 그렇다면 어떻게해야할까요?모든 테이블과 뷰를 표시하는 쿼리

select table_name 
from all_tables 
where owner = '<owner>' 
UNION 
select view_name 
from all_views 
where owner = '<owner>' 
order by table_name; 
+0

user_tables 및 user_views ... – igr

+0

@ 대신 사용자가 소유 한 * 소유권 * 객체를 보면 user_ * 뷰는 * 현재 * 사용자가 소유 한 객체 만 나열합니다. all_ * 뷰는 OP가 필요로하는 임의의 소유자가 소유 한 객체를 나열합니다. –

+0

우리는 다르게 해석합니다. "** 특정 소유자 **의 모든 테이블과 뷰." – igr

답변

1

내가 (저스틴 말하는대로) xxx_objects는이 목적을 위해 자신을 볼 원합니다 all_objects를 사용하여 뷰를 볼 것 따라서 추가 정보를 추가 할 수 있습니다 :

select 'Table' AS object_type, table_name 
from all_tables 
where owner = '<owner>' 
UNION ALL 
select 'View' AS object_type, view_name 
from all_views 
where owner = '<owner>' 
order by table_name; 

참고 두 결과 집합간에 충돌이 없으므로 UNION ALL을 사용하도록 변경했습니다.

+0

정확히 내가 달성하려고했던 것입니다. 덕분에 – user2692751

+0

그냥 원하는 모든 경우 개체 유형과 이름, 당신은 대신'all_objects'보기를 사용해야한다고 반복하고 싶습니다. –

1

내가 특별히 테이블에서 다른 데이터를 필요로하는 경우지만, 대신

select object_name, object_type 
    from all_objects 
where object_type in ('TABLE', 'VIEW') 
    and owner = <<schema name>> 
order by object_name 
관련 문제