Usar ou não Stored Procedures é mais uma discussão religiosa ou política em um bar do que não.
O que precisa ser feito é definir claramente suas camadas de aplicação e não ultrapassar esses limites. Os procedimentos armazenados têm várias vantagens e desvantagens sobre fazer consultas fora do banco de dados.
Vantagem 1:Os procedimentos armazenados são modulares. Isso é uma coisa boa do ponto de vista da manutenção. Quando surgem problemas de consulta em seu aplicativo, você provavelmente concorda que é muito mais fácil solucionar um procedimento armazenado do que uma consulta incorporada enterrada em muitas linhas de código GUI.
Vantagem 2:Os procedimentos armazenados são ajustáveis. Ao fazer com que os procedimentos que tratam do banco de dados funcionem para sua interface, você elimina a necessidade de modificar o código-fonte da GUI para melhorar o desempenho de uma consulta. As alterações podem ser feitas nos procedimentos armazenados - em termos de métodos de junção, tabelas diferentes, etc. - que são transparentes para a interface front-end.
Vantagem 3:Os procedimentos armazenados abstraem ou separam as funções do lado do servidor do lado do cliente. É muito mais fácil codificar um aplicativo GUI para chamar um procedimento do que construir uma consulta por meio do código GUI.
Vantagem 4:Os procedimentos armazenados geralmente são escritos por desenvolvedores/administradores de banco de dados. As pessoas que ocupam essas funções geralmente são mais experientes em escrever consultas e instruções SQL eficientes. Isso libera os desenvolvedores de aplicativos GUI para utilizar suas habilidades nas peças de apresentação gráfica e funcional do aplicativo. Se você fizer com que seu pessoal execute as tarefas para as quais eles são mais adequados, você acabará produzindo uma aplicação geral melhor.
Com tudo isso em mente, existem várias desvantagens.
Desvantagem 1:Os aplicativos que envolvem lógica e processamento de negócios extensos podem colocar uma carga excessiva no servidor se a lógica for implementada inteiramente em procedimentos armazenados. Exemplos desse tipo de processamento incluem transferências de dados, travessias de dados, transformações de dados e operações computacionais intensivas. Você deve mover esse tipo de processamento para o processo de negócios ou componentes lógicos de acesso a dados, que são um recurso mais escalável do que seu servidor de banco de dados.
Desvantagem 2:Não coloque toda a sua lógica de negócios em procedimentos armazenados. A manutenção e a agilidade de sua aplicação se tornam um problema quando você deve modificar a lógica de negócios na linguagem Sp. Por exemplo, aplicativos ISV que suportam vários RDBMS não precisam manter procedimentos armazenados separados para cada sistema.
Desvantagem 3:Escrever e manter procedimentos armazenados geralmente é um conjunto de habilidades especializadas que nem todos os desenvolvedores possuem. Esta situação pode introduzir gargalos no cronograma de desenvolvimento do projeto.
Eu provavelmente perdi algumas vantagens e desvantagens, sinta-se à vontade para comentar.