Eu tenho uma função Oracle SQL, que retorna vários registros por meio de várias subconsultas. No entanto, existem inúmeros filtros que podem ser aplicados a esses registros de resultados.
Em uma linguagem de programação de aplicativos, eu seria capaz de abstrair o comportamento de filtragem, permitindo um parâmetro de função para minha função, ou seja, um retorno de chamada em JS ou um objeto de interface funcional em Java.
Outra possibilidade é ter parâmetros opcionais ou sobrecarga de função , mas ainda não é escalável em relação a diferentes demandas de filtragem. Além disso, não funcionará em procedimentos ou funções armazenadas.
Sou novo em escrever procedimentos e funções SQL, então gostaria de saber se existe alguma outra opção além de usar uma linguagem de programação de aplicativo?
Callbacks são totalmente contra a ideia por trás do SQL. Ele é projetado como uma linguagem declarativa em que as consultas descrevem a tarefa e o otimizador de consultas cria composições de classificações, buscas de índice, mesclagens etc. para atender à consulta. Nenhum processamento linha por linha por retornos de chamada.
O Oracle suporta sobrecarga, com restrições http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/subprograms.htm#sthref1738 O que vocês acham que não funciona? Você deve colocar subprogramas sobrecarregados em pacotes, mas é uma maneira muito razoável de tornar o lado do Oracle flexível em qualquer caso, independentemente da sobrecarga. Mas concordo, dificilmente pode ajudar com inúmeras opções de filtro.
Sim, o aplicativo é o melhor lugar para construir a consulta SQL dependendo das múltiplas escolhas do usuário (filtrar por preço e cor, ou por ano e marca, ...).