Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Douglas Lagmann

Problema com Function Sql Server

Recommended Posts

Olá

 

Preciso criar uma função que me retorne uma tabela mais ou menos assim:

 

(está função retorna uma tabela)

CREATE FUNCTION [dbo].[f_pessoa] (@cod int)

RETURNS table

AS

RETURN ( SELECT * FROM pessoas where [codigo da pessoa] =@cod)

 

porém na função que estou criando, eu monto o sql dinamicamente, sendo então que a consulta ficaria armazenada em uma variavél... seria mais ou menos assim:

 

CREATE FUNCTION [dbo].[f_pessoa] (@cod int) RETURNS table

AS

begin

declare @sql as nvarchar(1000)

set @sql= 'SELECT * FROM pessoas where [codigo da pessoa] =' +@cod

RETURN ( @sql )

end

 

 

e eu irei precisar está função desta maneira, pq eu preciso fazer um select da tabela que a função retorna:

select * from dbo.f_pessoa(2)

 

está minha função, de acordo com os parametros passados pra elá, irá montar um sql, e eu preciso executar este sql, para retornar ele que nem uma tabela (no caso como eu demostrei na primeira função), só que eu não consegui fazer executar este sql que vou criando na variavel @sql...

 

 

não sei se consegui ser claro.. mas é isso que eu preciso, retornar uma tabela de um select que monto em uma variavel dentro da função, não posso deixar o sql fixo dentro da minha função como demostrei na primeira vez ...

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

tentei usar o EXECUTE, mas não deu certo.. pq o execute não funciana em functions...

 

alguem saberia me dizer como poderia fazer isto daqui..

 

tenho um store procedure, e nela monto um sql em uma variavel :

 

CREATE procedure teste2 (@xxx varchar(1000))

AS

declare @Values nvarchar(1000);

set @values = 'select * from pessoas'

 

EXECUTE sp_executesql @values

 

se eu executar esta store procedure eu consigo ver os dados do select que ela retorna...

 

EXEC teste2 'w'

 

 

poré, como poderia fazer um select do retorno desta store procedure...

 

algom assim:

 

SELECT * FROM teste2('w')

 

 

é isto que eu preciso...

 

Obrigado..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.