I didn't misunderstand you, I don't like the question. For the partial out of context answer would give people the motivation to say "ah hah, just do it in java, see Tom said so".
But I won't, I can't, and they shouldn't.
The answer: it depends.
(anyone see that coming??? :)
are you executing the query, processing the rows and doing something else database wise with them?
for x in ( select .... )
loop
something
something database'ish
end loop
High probability that PLSQL would excel performance wise over a CLIENT APPLICATION (any of them, don't care what language you pick).
You lose the round trips.
You have datatype nirvana.
You have all I wrote about above.
If you just run a query and print the results on a screen, then the runtime performance difference between:
a) a CLIENT APPLICATION opening it's own cursor
vs
b) a CLIENT APPLICATION getting a cursor opened by plsql
would be not measurable. For you see, you have a client getting a cursor, a cursor is a cursor is a cursor.
so, in closing, I can find lots of reasons NOT to put select, insert, update, delete in a client application.
I am hard pressed to find any reasons NOT to put them in stored procedures.
How about you?
I refuse - absolutely and adamantly - to make this about a single query performance. It just gives fodder for the wrong people to come to the wrong conclusion.