Eu sugiro que você divida seu procedimento armazenado em dois procedimentos que, cada um, respectivamente, retornam uma tabela separada e os chamam para planilhas diferentes.
Há várias maneiras de retornar dados ao Excel usando SQL
Aqui está um dos meus favoritos do código de Joshua (você não precisa usar os parâmetros):
-
Selecione a guia Dados na Faixa de Opções do Excel e, no grupo Obter Dados Externos, escolha a lista suspensa "De outras fontes". Em seguida, escolha "Do Microsoft Query"
-
Na caixa pop-up "Escolher fonte de dados", selecione seu SQL Server e clique em OK.
-
Feche o pop-up "Adicionar tabelas", se necessário.
-
Clique no botão "SQL" ou escolha Exibir> SQL para abrir o editor pop-up SQL.
-
Insira a seguinte sintaxe:{CALL myDatabaseName.dbo.myStoredProc (?, ?, ?)}
Por exemplo:{CALL northwind.dbo.spGetMaxCost (?, ?, ?)}
Certifique-se de incluir as chaves rabiscadas ao redor da instrução de chamada. Cada ponto de interrogação (?) indica um parâmetro. Se o procedimento armazenado solicitar mais ou menos parâmetros, adicione ou subtraia pontos de interrogação conforme necessário.
-
Aperte o botão OK. Uma caixa de pergunta deve aparecer dizendo "Consulta SQL não pode ser representada graficamente, continuar mesmo assim?", basta clicar no botão OK.
-
Agora você será solicitado a fornecer parâmetros de amostra para cada ponto de interrogação incluído acima. Insira valores de parâmetro válidos para os dados que você está consultando.
-
Depois de inserir o último parâmetro, você deve obter alguns resultados no Microsoft Query. Se eles parecerem bons, feche o Microsoft Query.
-
Agora você deve estar olhando para um pop-up "Importar dados". Clique no botão Propriedades, que abrirá o pop-up "Propriedades da conexão".
-
Selecione a guia Definição e, em seguida, selecione o botão Parâmetros. Agora você deve ver um pop-up "Parâmetros", onde você pode conectar o parâmetro a uma célula específica.
-
Selecione Obter o valor da célula a seguir e conecte-se a uma célula apropriada no Excel que conterá seu parâmetro, clicando na pequena caixa com a seta.
-
Se você quiser que os dados sejam atualizados toda vez que você alterar a célula que contém o parâmetro, marque a caixa "Atualizar automaticamente quando o valor da célula for alterado"
-
Continue como acima para os outros parâmetros. Quando terminar, clique em OK para retornar ao pop-up Connection Properties. Clique em OK para retornar ao pop-up Importar dados e clique em OK novamente.
-
Agora você deve ter alguns dados direto do seu procedimento armazenado.
Você terminará com informações de conexão semelhantes a:
Informações de conexão
E, se você usar parâmetros da planilha, no meu exemplo,