WITHを利用して、これをより良く(そして維持しやすく)することができます:
WITH query1 as (
select 1, 2
from dual
where 1=0
connect by level <= 10
),
query2 as (
select 3, 4
from dual
connect by level <= 10
)
select *
from query1
union all
select *
from query2
where not exists (
select null
from query1
);
これは、query2から10行を返す必要があります。 where 1 =0をquery1から削除すると(実際に行が返されるようになります)、query1から10行を取得する必要があります。