Я думаю, что лучше иметь всю логику создания запросов в одном месте, Java или Oracle. Я полагаю, что вы знаете, как сделать это на Java. В Oracle, если запрос извлекает только строку, вы можете использовать предложение EXECUTE IMMEDIATE ... INTO.
Если запрос возвращает несколько строк и имеет единственные параметры (без использования оператора IN), вы можете использовать стратегию REF CURSOR, чтобы зациклить результаты запроса или вернуть сам курсор в программу Java (вы должны импортировать Oracle java-предложения, если вы используй это). First Ref Cursor ответ в Google
Если вы должны использовать параметр IN (или в других редких случаях), вы должны проанализировать запрос с пакетом DBMS_SQL, который является СЛИШКОМ многословным и немного сложным в использовании, но он ОЧЕНЬ гибок. DBMS_SQL doc (смотрите схему перед тем, как читать методы)