As far as I can tell, there's no way to do that - not in a simple manner, that is. You'll have to run the same query twice: once to display the result (if any), and another time to check whether that query returned something or not.
It means that it'll be much slower, of course (performing the same query twice).
A workaround might be preparing data into a separate table (see if you could use a global temporary table) only once, and then
- check whether it contains any rows or not
- simply
select * from that_table (without any conditions, as you've already done that when you inserted data into it)
Or, if a query you're interested in is simple & fast, just use it in your PL/SQL procedure. You'll have to maintain the same code on multiple places. See if you can create a function that returns a table - that would simplify things (sort of).