Posso chamar uma procedure via function
Estou com uma aplicação que não consegue CHAMAR PROCS, ela só ler functions em SQL, a pergunta é, tem como eu chamar uma procedure via Function, passando os parâmetros na função, que alimentaria os parâmetros da proc?
Patrick
Curtidas 0
Respostas
Patrick
20/01/2016
Nunca tive esta necessidade mas veja o este link acho que vai ajudá-lo.
Olá, obrigado pela resposta, então eu já vi esse Link, mas infelizmente, não me ajudou muito... :c
GOSTEI 0
Marcos P
20/01/2016
Sua ideia é usar a Função exclusivamente para passar os parâmetros para a Procedure ?
Após a chamada da procedure no corpo da Função, existe a necessidade de continuar executando os demais comandos ( se existirem ) da Função ?
Você chegou a simular algo nessa linha ? Obteve algum erro ? Qual ?
Após a chamada da procedure no corpo da Função, existe a necessidade de continuar executando os demais comandos ( se existirem ) da Função ?
Você chegou a simular algo nessa linha ? Obteve algum erro ? Qual ?
GOSTEI 0
Patrick
20/01/2016
Sua ideia é usar a Função exclusivamente para passar os parâmetros para a Procedure ?
Após a chamada da procedure no corpo da Função, existe a necessidade de continuar executando os demais comandos ( se existirem ) da Função ?
Você chegou a simular algo nessa linha ? Obteve algum erro ? Qual ?
Após a chamada da procedure no corpo da Função, existe a necessidade de continuar executando os demais comandos ( se existirem ) da Função ?
Você chegou a simular algo nessa linha ? Obteve algum erro ? Qual ?
Não, minha ideia é além de passar os parâmetros na função, executar a Proc, no mais, a função só faria isso, não existe mais comandos na função (teoricamente falando).
Sobre ter obtido algum erro, não obtive nenhum pq não consegui simplesmente montar, já que nem sei se isso é possivel...
GOSTEI 0
Marcos P
20/01/2016
Não vejo problemas maiores nisso que você pretende fazer, ainda mais se considerarmos que a função será destinada exclusivamente à esse fim.
Tente montar uma ambiente simples de teste para isso e se ocorrer algum erro, volte aqui que eu tento lhe ajudar.
Tente montar uma ambiente simples de teste para isso e se ocorrer algum erro, volte aqui que eu tento lhe ajudar.
GOSTEI 0
Patrick
20/01/2016
Não vejo problemas maiores nisso que você pretende fazer, ainda mais se considerarmos que a função será destinada exclusivamente à esse fim.
Tente montar uma ambiente simples de teste para isso e se ocorrer algum erro, volte aqui que eu tento lhe ajudar.
Tente montar uma ambiente simples de teste para isso e se ocorrer algum erro, volte aqui que eu tento lhe ajudar.
Então, eu fiz uma function que chama minha proc pra testar, usando a seguinte sintaxe:
CREATE FUNCTION OLA ( @id int ) return table as begin EXEC TESTE @id return END
Porém, da erro: Msg 156, Level 15, State 1, Procedure OLA, Line 6
Incorrect syntax near the keyword 'return'.
Poderiam me ajudar?
GOSTEI 0
Marcos P
20/01/2016
Tenta assim...
CREATE FUNCTION OLA (@id int) return char(2) as begin EXEC TESTE @id return ('OK') end
GOSTEI 0
Patrick
20/01/2016
Tenta assim...
CREATE FUNCTION OLA (@id int) return char(2) as begin EXEC TESTE @id return ('OK') end
Então, não funcionou, e no mais, eu preciso retornar uma table, já que minha aplicação le só functions que retornam tabelas, com respetivos campos =/
Segue o Erro da sua query:
Msg 156, Level 15, State 1, Procedure OLA, Line 2 Incorrect syntax near the keyword 'return'. Msg 156, Level 15, State 1, Procedure OLA, Line 3 Incorrect syntax near the keyword 'as'. Msg 178, Level 15, State 1, Procedure OLA, Line 6 A RETURN statement with a return value cannot be used in this context.
GOSTEI 0
Marcos P
20/01/2016
Qual sua versão do Sql Server ?
Comente a chamada à procedure... a chamada à função funciona, sem ela ?
Comente a chamada à procedure... a chamada à função funciona, sem ela ?
GOSTEI 0
Patrick
20/01/2016
Qual sua versão do Sql Server ?
Comente a chamada à procedure... a chamada à função funciona, sem ela ?
Comente a chamada à procedure... a chamada à função funciona, sem ela ?
Não, não funciona também sem a chamada da PROC, a versão da base de dados da empresa utilizada é a 2005.
GOSTEI 0
Marcos P
20/01/2016
Na criação, o correto é "returnS" e não return...
CREATE FUNCTION OLA (@id int) returns char(2) as begin EXEC TESTE @id return ('OK') end
GOSTEI 0
Marcos P
20/01/2016
E aí ?
GOSTEI 0
Patrick
20/01/2016
E aí ?
Bom, a função executou, porém deu erro na Proc, dizendo que não era uma procedure extendida, de qualquer forma, Obrigado a todos que ajudaram =)
GOSTEI 0