Posso chamar uma procedure via function

20/01/2016

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

Respostas

20/01/2016

Jothaz

Nunca tive esta necessidade mas veja o este link acho que vai ajudá-lo.
Responder Citar

20/01/2016

Patrick

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
Responder Citar

20/01/2016

Marcos P

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 ?
Responder Citar

20/01/2016

Patrick

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 ?



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...
Responder Citar

20/01/2016

Marcos P

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.
Responder Citar

21/01/2016

Patrick

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.



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?
Responder Citar

21/01/2016

Marcos P

Tenta assim...

CREATE FUNCTION OLA (@id int) 
return char(2)
as
begin
  EXEC TESTE @id
  return ('OK')
end
Responder Citar

21/01/2016

Patrick

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.

Responder Citar

21/01/2016

Marcos P

Qual sua versão do Sql Server ?

Comente a chamada à procedure... a chamada à função funciona, sem ela ?
Responder Citar

21/01/2016

Patrick

Qual sua versão do Sql Server ? 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.
Responder Citar

21/01/2016

Marcos P

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
Responder Citar

21/01/2016

Marcos P

E aí ?
Responder Citar

21/01/2016

Patrick

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 =)
Responder Citar