Ir para conteúdo

POWERED BY:

Arquivado

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

Estevam

Executar resultado do Select

Recommended Posts

Pessoal alguém sabe como faço para executar um resultado de select, o select que tenho traz uma string que terei que exececutar com o comando exec, alguém tem alguma idéia de como isso poderia ser feito:SELECT 'exec sp_changeobjectowner "'+ b.name+ '.' +a.name +'","DBO"' from sysobjects a Join sysusers bon a.uid = b.uidwhere a.uid <>1Preciso executar cada linha que o select acima me traz de resultado.ObrigadoLuiz Estevam

Compartilhar este post


Link para o post
Compartilhar em outros sites

tu pode rodar num cursor, aqui tem um exemplo de cursor: http://forum.imasters.com.br/index.php?showtopic=224865

Estou tentando fazer isso, mas da mensagem de erro:

Mensagem de erro: The name ' sp_changeobjectowner "teste.sp_intranet_RelatorioGerencial_ListarRelatoriosEmAbertoFechamento","DBO"' is not a valid identifier.

 

USE intranet

GO

Declare @teste varchar(8000)

Declare @cont int

Set @cont = 1

Set @teste = (SELECT Count ('exec sp_changeobjectowner "'+ b.name+ '.' +a.name +'","DBO"') from sysobjects a Join sysusers b on a.uid = b.uid where a.uid <> 1)

Declare x cursor

LOCAL

FOR SELECT (' sp_changeobjectowner "'+ b.name+ '.' +a.name +'","DBO"') AS textoexe from sysobjects a Join sysusers b on a.uid = b.uid where a.uid <> 1

 

Declare @textoexe varchar(4000)

open x

while @cont <= @teste

BEGIN

FETCH X INTO @textoexe

EXECUTE @textoexe

SET @CONT = @CONT + 1

END

close x

deallocate x

Compartilhar este post


Link para o post
Compartilhar em outros sites

e se tu executar só isso: exec sp_changeobjectowner "teste.sp_intranet_RelatorioGerencial_ListarRelatoriosEmAbertoFechamento","DBO"'

se não for tenta tirar o teste.

tenta tb. passar o DBO em minusculo dbo

 

outra coisa, não esquece de setar o banco antes de executar, mesmo com o exec dinamico, qdo. executado dinamicamente é executado no tempdb ou no masters, não to recordando, mas creio que é em um desses

 

veja mais sobre o sp_changeobjectowner

 

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

e se tu executar só isso: exec sp_changeobjectowner "teste.sp_intranet_RelatorioGerencial_ListarRelatoriosEmAbertoFechamento","DBO"'

se não for tenta tirar o teste.

tenta tb. passar o DBO em minusculo dbo

 

outra coisa, não esquece de setar o banco antes de executar, mesmo com o exec dinamico, qdo. executado dinamicamente é executado no tempdb ou no masters, não to recordando, mas creio que é em um desses

 

veja mais sobre o sp_changeobjectowner

 

 

t+

Finalizado pessoal, o que faltava mesmo era dois parenteses.

 

USE bdteste

GO

Declare @teste int

Declare @cont int

Set @cont = 1

Set @teste = (SELECT Count ('exec sp_changeobjectowner "'+ b.name+ '.' +a.name +'","DBO"') from sysobjects a Join sysusers b on a.uid = b.uid where a.uid <> 1)

Declare x cursor

LOCAL

FAST_FORWARD

FOR SELECT ('exec sp_changeobjectowner "'+ b.name+ '.' +a.name +'","DBO"') AS textoexe from sysobjects a Join sysusers b on a.uid = b.uid where a.uid <> 1

 

Declare @textoexe nvarchar(4000)

open x

while @cont <= @teste

BEGIN

FETCH X INTO @textoexe

EXEC (@textoexe)

SET @CONT = @CONT + 1

END

close x

deallocate x

 

Abraços

 

Estevam

Compartilhar este post


Link para o post
Compartilhar em outros sites

Camarada,Maneiro você compartilhar a solução com o pessoal do fórum.Valeumsm.E precisando estamos ai.t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Camarada,Maneiro você compartilhar a solução com o pessoal do fórum.Valeumsm.E precisando estamos ai.t+

Informação não se guarda, conhecimento deve ser passado sempre a frente, quem não o faz acaba ficando para trás.Afinal uma mão lava a outra, e aprendemos mais a cada dia. =)FlwAbraçosEstevam

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.