有以下查询:
select table_name from user_tables where table_name in ('A','B','C','D','E','F');
假设仅存在user_tables记录B,C和F,我想检索不存在的值A,D和E。这是一个简单的示例,在现实世界中,列表可能很大。
生成伪造行的一种好方法是使用标准集合,例如sys.odcivarchar2list:
sys.odcivarchar2list
select tables_to_check.table_name, case when user_tables.table_name is null then 'No' else 'Yes'end table_exists from ( select column_value table_name from table(sys.odcivarchar2list('does not exist', 'TEST1')) ) tables_to_check left join user_tables on tables_to_check.table_name = user_tables.table_name order by tables_to_check.table_name; TABLE_NAME TABLE_EXISTS ---------- ------------ TEST1 Yes does not exist No