Dima -
I agree with your summary, but I still think this MIGHT be an alternative (in fact, zihancool's only alternative). I realized when I posted the suggestion that it is NOT a very good alternative, which is why I phrased it as a question and not a declaration.
The problem here is that we don't really know what is being done with the data, nor what other requirements zihancool has. All we know is that the number of rows fetched needs to be known before processing starts, and if a second query has to be used, then the response is "never mind, I will try some other way to achieve my goal". As far as I can tell, this is the only "other way".
But again, you are right - this WILL be less efficient then simply opening a cursor!