Array
(
)

Posso chamar uma procedure via function

Patrick
   - 20 jan 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?

Jothaz
   - 20 jan 2016

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

Patrick
   - 20 jan 2016


Citação:
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

Marcos P
   - 20 jan 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 ?

Patrick
   - 20 jan 2016


Citação:
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...

Marcos P
   - 20 jan 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.

Patrick
   - 21 jan 2016


Citação:
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:

#Código

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?

Marcos P
   - 21 jan 2016

Tenta assim...

#Código

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

Patrick
   - 21 jan 2016


Citação:
Tenta assim...

#Código

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: #Código
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.

Marcos P
   - 21 jan 2016

Qual sua versão do Sql Server ?

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

Patrick
   - 21 jan 2016


Citação:
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.

Marcos P
   - 21 jan 2016

Na criação, o correto é "returnS" e não return...

#Código

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

Marcos P
   - 21 jan 2016

E aí ?

Patrick
   - 21 jan 2016


Citação:
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 =)