No me imagino como para que necesitas esto... pero el método concebido es bastante ingenioso y funcional, aunque ciertamente no es óptimo.
Si las condiciones no son muy variadas... sería mucho mejor trabajar con consultas parámetrizadas, de manera que se pueda aprovechar el cache y no obligar a reanalizar la consulta cada vez que se envía.
Dependiendo de la versión de Oracle que uses, puede ser aconsejable también no usar la tabla dual para hacer la consulta.. pues es bastante ineficiente, ya que por alguna razón el motor no la mantiene en memoria y obliga a dos acceso al disco por cada consulta. Es mejor crear tu propia tabla (xDual) que tenga un solo registro (podes garantizarlo con la PK) y basarte en esta, que si se mantendrá en cache para hacer las consultas.
Con esas dos mejoras... será mucho mas eficiente.
Hasta luego.
