Eu tenho um procedimento armazenado que retorna 80 colunas e 300 linhas. Eu quero escrever um select que recebe 2 dessas colunas. Algo como
SELECT col1, col2 FROM EXEC MyStoredProc 'param1', 'param2'
Quando usei a sintaxe acima, recebo o erro:
"Nome da coluna inválido".
Eu sei que a solução mais fácil seria alterar o procedimento armazenado, mas não o escrevi e não posso alterá-lo.
Existe alguma maneira de fazer o que eu quero?
Eu poderia criar uma tabela temporária para colocar os resultados, mas como existem 80 colunas, seria necessário criar uma tabela temporária de 80 colunas apenas para obter 2 colunas. Eu queria evitar rastrear todas as colunas retornadas.
Tentei usar
WITH SprocResults AS ....
como sugerido por Mark, mas obtive 2 errosSintaxe incorreta perto da palavra-chave 'EXEC'.
Sintaxe incorreta perto de ')'.Tentei declarar uma variável de tabela e recebi o seguinte erro
Erro de inserção: o nome da coluna ou o número de valores fornecidos não corresponde à definição da tabela
Se eu tentar
SELECT * FROM EXEC MyStoredProc 'param1', 'param2'
, recebo o erro:Sintaxe incorreta perto da palavra-chave 'exec'.
EXEC
não é uma palavra-chave do MySQL (o equivalente do MySQL é instruções preparadas ). Embora eu gostaria de saber a resposta para o MySQL, as respostas abaixo são direcionadas ao T-SQL. Marcando novamente.