Hay algunas formas simples de usar solo sql.
Defina su primera consulta como una tabla temporal, con la unión de todos, filtre la segunda consulta con el conteo de la tabla temporal.
with temp as (select * from t1 where 1=0)
select * from temp
union all
select * from t2 where (select count(*) from temp) =0
Esta consulta devolverá los registros de la segunda tabla.
with temp as (select * from t1 )
select * from temp
union all
select * from t2 where (select count(*) from temp) =0
Y si la consulta temporal tiene un resultado, solo devuelve la consulta temporal.
Puede probar con sql fiddle aquí .