Usuário com melhor resposta
Como capturando retorno de um select customizado...

Pergunta
-
Prezados,
Minha duvida é a seguinte:
Preciso armazenar numa variavel o retorno de um select customizado.
Ex:
Declare @Valor as int
@CmdSql varchar(5000)SET @CMDSQL = 'SELECT TOP 1 AU_ID FROM DBO.AUTHORS'
EXEC(@CMDSQL)Preciso que a variavel @Valor receba o retorno desse select.
Evidentemetne eu podria utilizar 'SELECT TOP 1 @Valor = AU_ID FROM DBO.AUTHORS'
Mas.. meu select será customizado; e tb necessito dessa variavel preenchida para fazer outros processamentos.
Alguém poderia dar uma luz?
Grato desde já!
Respostas
-
veja este exemplo
Declare @Ret Int
Declare @Comando_SQL nVarchar(1000)
Declare @Parametros nVarchar(1000)Select @Comando_SQL = ' Select @Reg = 1 '
Set @Parametros = N'@Reg int Output'exec SP_ExecuteSql @Comando_Sql, @Parametros , @Reg = @Ret Output
Print @Ret
Abs;
Todas as Respostas
-
veja este exemplo
Declare @Ret Int
Declare @Comando_SQL nVarchar(1000)
Declare @Parametros nVarchar(1000)Select @Comando_SQL = ' Select @Reg = 1 '
Set @Parametros = N'@Reg int Output'exec SP_ExecuteSql @Comando_Sql, @Parametros , @Reg = @Ret Output
Print @Ret
Abs;
-
Bom dia Adriano, conforme a bem exemplificada explicação do nosso amigo Marcelo, a solução é você utilizar o sp_executesql, sempre procure utlizá-la ao invés de utlizar o execute, você tem um ganho bastante significativo principalmente no quesito segurança.
Espero ter ajudado
-
Adriano,
O que acontece quando se utiliza o Execute ou Exec, é que o SQL Server entende que não é necessário utilizar o plano de execução de query's, com isso todo processo de customização para obtenção da melhor performance é desconsiderado.
Quando se utiliza a Stored Procedure sp_executesql, por se tratar de uma stored procedure por padrão o SQL Server faz uso do plano de execução.
-