Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SELECT FROM procedimento armazenado?


Eu entendo que isso tem mais de 3 anos, mas caso alguém esteja procurando uma resposta para essa pergunta. Eu tive que lidar com essa plataforma de relatórios, Izenda, e descobri que os procedimentos armazenados são tratados de maneira diferente da saída do ícone "sql". Aqui está o que acontece quando você seleciona sp como fonte de dados
  1. Um sql dinâmico é construído
  2. Cria duas tabelas temporárias com todas as colunas que seu sp está retornando
  3. A primeira tabela temporária é preenchida com o resultado do seu procedimento armazenado
  4. A segunda tabela temporária é preenchida com o resultado mais o valor do seu parâmetro de entrada.
  5. É criada uma instrução que consulta essas duas tabelas temporárias

Observe que, se você não alimentar um parâmetro, ele será executado com um valor padrão de string vazia '' que provavelmente não retornará nenhum dado.

Na minha opinião, ideia horrível para lidar com procs armazenados, o que é uma boa razão pela qual planejamos descartá-los para alguma outra solução de relatório.