Olá, boa tarde gente!
Estou trabalhando em um fluxo que usará as informações geradas por uma procedure de um banco de dados SQL server.
A conexão foi feita e esta funcionando corretamente com as tabelas, mas quando tento trazer o resultado da procedure não funciona.
Desconfio que seja porque essa procedure gera uma planilha temporária como resultado final, lembro de ter lido uma vez que o alteryx não conseguia trazer planilhas temporárias na entrada de dados.
Alguém sabe se de fato não é possível trazer essas planilhas temporárias, ou se conhece alguma forma de trazer esse tipo de informação?
Oi @Gabriel_Brandao ,
Veja se este link te ajuda: https://community.alteryx.com/t5/Alteryx-Designer-Discussions/Function-sequence-error-with-SQL-Store...
Se possível, nos dê mais detalhes, como qual a mensagem de erro, qual tipo de driver está utilizando, se é indb ou não, e a estrutura da procedure.
Olá @AZuc , não tenho muita experiência com BD então á peço perdão caso não fique tão clara a explicação do problema.
- Ao tentar Executar a procedure apenas aparece um erro de consulta dizendo que nenhuma coluna é retornada (anexo).
- A conexão feita é ODBC.
- Infelizmente não tenho acesso a procedure que é executada, ela faz parte de um sistema que contratamos e não temos acesso ao código, a imagem é do comando de execução dela.
Pesquisei um pouco mais e encontrei links que podem ser úteis:
https://community.alteryx.com/t5/Alteryx-Designer-Knowledge-Base/Stored-Procedures-FAQ/ta-p/376886
https://community.alteryx.com/t5/Forum-Portugues/Stored-Procedure-nao-retorna-dados/td-p/574377
Voltando ao seu ponto original: "Alguém sabe se de fato não é possível trazer essas planilhas temporárias, ou se conhece alguma forma de trazer esse tipo de informação? "
Verifique este link: https://community.alteryx.com/t5/Bugs-Issues/ODBC-call-of-stored-procedure-giving-quot-No-Columns-Re...
Aparentemente, o ODBC executa a procedure num escopo separado, e tabelas temporárias não são acessíveis externamente. Pela indicação do link, o uso de OleDB poderia resolver.
Você consegue testar esta opção?
Olá @AZuc , só agora puder dar uma olhada em todos os links.
Fiz a mudança para OleBD, mas ainda não consegui trazer o resultado da consulta.
Acabei descobrindo que o resultado da procedure é enviado para dentro de uma variável quando executada, mas ao tentar declarar a variável no ambiente de consulta do alteryx ele retorna um erro.
Não é esperado que você retorne o resultado de uma query ou procedure para uma variável, visto que é o Alteryx quem tem que receber este resultado para prosseguir com o processamento.
O que acontece no OleDB quando você configura a chamada da procedure como da forma original (EXEC ...) ? Dá o mesmo erro de nenhuma coluna retornada?
Repare que no link abaixo o usuário precisou fazer outra modificação para que a procedure funcionasse, além da troca do ODBC para OleDB:
https://community.alteryx.com/t5/Forum-Portugues/Stored-Procedure-nao-retorna-dados/td-p/574377
Chegou a entrar em contato com o desenvolvedor da procedure para saber se ele utiliza o SET NOCOUNT ON?
Olá @AZuc , infelizmente fiquei umas semanas sem conseguir trabalhar nesse fluxo.
Tentei fazer as adaptações indicadas no post e infelizmente não tive muita melhora.
falando com o desenvolvedor do BD ele constatou que são usadas planilhas temporárias na procedure para criação dos relatórios mas no final o resultado fica dentro de uma "Variável do tipo tabela". Pelo que pesquisei esse tipo de variável tem alguns restrições. Sabe informar se isso poderia gerar um problema ao trazer para o Alteryx?
Oi @Gabriel_Brandao ,
O Alteryx precisa receber a saída de um "SELECT" como dado. Se o SELECT está indo para uma variável, ele não recebe a saída.