他の2つの答えは完全に大丈夫なので、私は混乱しています。いつも「デュアルから」などと入力したくないということですか?もしそうなら、短いバージョンは次のとおりです。
create type varchar2_tab as table of varchar2(30);
/
with tables as (select value(t) table_name
from table(varchar2_tab('RAM','SHA','EMPLOYEE','E_SCHOOL')) t)
select my_tab.table_name, nvl2(t.table_name, 'FOUND', 'NOT FOUND')
from tables my_tab
left outer join all_tables t
on t.table_name = my_tab.table_name;
または、独自のタイプを作成できない場合:
with tables as (select value(t) table_name
from table(sys.DBMSOUTPUT_LINESARRAY(
'RAM','SHA','EMPLOYEE','E_SCHOOL')) t)
select my_tab.table_name, nvl2(t.table_name, 'FOUND', 'NOT FOUND')
from tables my_tab
left outer join all_tables t
on t.table_name = my_tab.table_name;
あなたはで利用可能な公開コレクションを見ることができます
select owner, type_name, coll_type, upper_bound, length
from all_coll_types
where elem_type_name = 'VARCHAR2' and length >= 30
- ALL_TABLESを使用すると、所有者句を含めずに多くのスキーマを調べていることになります。()を付ける
n t.table_name = my_tab.table_name and t.owner = 'XX'
か、テーブルの所有者として接続している場合は、ユーザービューを使用する必要があります