1

特定の所有者のすべてのテーブルとビューを表示するクエリを考え出しました。私が今やりたいことですが、問題は、フィールドが「テーブル」か「ビュー」かを行ごとに示す2番目の列が欲しいということです。これは可能ですか?もしそうなら、どうすればいいですか?

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

2 に答える 2

1

all_objects代わりに使用します

select object_name, object_type
  from all_objects
 where object_type in ('TABLE', 'VIEW')
   and owner = <<schema name>>
 order by object_name
于 2013-11-04T03:11:36.523 に答える
1

この目的のために xxx_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;

2 つの結果セット間で衝突が発生しないため、UNION ALL を使用するように変更したことに注意してください。

于 2013-11-04T06:00:27.940 に答える