Posso chamar uma procedure via function

SQL Server

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

Patrick

Curtidas 0

Respostas

Jothaz

Jothaz

20/01/2016

Nunca tive esta necessidade mas veja o este link acho que vai ajudá-lo.
GOSTEI 0
Patrick

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

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 ?
GOSTEI 0
Patrick

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 ?



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

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.
GOSTEI 0
Patrick

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.



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

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

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

Marcos P

20/01/2016

Qual sua versão do Sql Server ?

Comente a chamada à procedure... a chamada à função funciona, sem ela ?
GOSTEI 0
Patrick

Patrick

20/01/2016

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.
GOSTEI 0
Marcos P

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

Marcos P

20/01/2016

E aí ?
GOSTEI 0
Patrick

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
POSTAR