我很困惑,因为其他两个答案都很好。是不是你不想一直输入“from dual”等?如果是这样,则较短的版本是:
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'
) 或者,如果您以表所有者身份连接,则只需使用用户视图