none
Como capturando retorno de um select customizado... RRS feed

  • 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á!

    segunda-feira, 21 de maio de 2007 01:11

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;

    segunda-feira, 21 de maio de 2007 10:02

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;

    segunda-feira, 21 de maio de 2007 10:02
  • 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

    segunda-feira, 21 de maio de 2007 10:53
  • 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.

    segunda-feira, 21 de maio de 2007 11:24
  • Muito obrigado,

    Vlw de mais!!

    terça-feira, 22 de maio de 2007 01:30