none
Erro - Must declare the scalar variable "@Recno" RRS feed

  • Pergunta

  • Boa tarde Pessoal,

    Tenho o codigo abaixo. Porém eu não consigo atribuir a variavel o conteudo retornar pelo Select. Como eu poderia fazer issopreciso desse conteúdo para incrementar em uma outra parte do processo.

    Declare

     

    @Recno int

    Declare

     

    @Emp varchar(2)

    Set

     

    @Emp ='95'

     

    exec

     

    ('select @Recno = isnull(max(R_E_C_N_O_),1)+1 from CT2'+@Emp+'0')

    Print

     

    (@Recno)

    Go


    W.Marrane
    sexta-feira, 16 de abril de 2010 18:35

Respostas

  • marrane,

    teste este script

    DECLARE @Recno INTDeclare @Emp varchar(2), @sqlStatement NVARCHAR(max), @sqlParameters NVARCHAR(max)Set @Emp ='95'SET @sqlParameters = '@result INT OUTPUT'SET @sqlStatement = 'select @result = isnull(max(R_E_C_N_O_),1)+1 from CT2'+@Emp+'0'EXEC sp_executesql @sqlStatement, @sqlParameters, @result = @Recno OUTPUTPRINT @Recno

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    • Marcado como Resposta W. Marrane sexta-feira, 16 de abril de 2010 20:02
    sexta-feira, 16 de abril de 2010 19:03
    Moderador

Todas as Respostas

  • marrane,

    teste este script

    DECLARE @Recno INTDeclare @Emp varchar(2), @sqlStatement NVARCHAR(max), @sqlParameters NVARCHAR(max)Set @Emp ='95'SET @sqlParameters = '@result INT OUTPUT'SET @sqlStatement = 'select @result = isnull(max(R_E_C_N_O_),1)+1 from CT2'+@Emp+'0'EXEC sp_executesql @sqlStatement, @sqlParameters, @result = @Recno OUTPUTPRINT @Recno

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    • Marcado como Resposta W. Marrane sexta-feira, 16 de abril de 2010 20:02
    sexta-feira, 16 de abril de 2010 19:03
    Moderador
  • Marrane,

     

    O que acontece é o seguinte, quando você utiliza o comando Exec o SQL Server cria em tempo de execução uma nova sessão para executar este bloco de código, sendo assim, as variáveis que você declarou não estão criadas neste sessão por isso a mensagem de erro, neste caso você poderia tentar fazer o seguinte:

     

    1 - Declarar as variáveis dentro do comando Exec;

    2 - Utilizar os comandos Execute ou SP_ExecuteSQL;

    3 - Trabalhar com Query dinâmicas, utilizando um variável do tipo Varchar que será responsável em conter os comandos T-SQL e depois através do comando Exec(@NomedaSuaVariavel) executar o bloco de instruções.


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
    sexta-feira, 16 de abril de 2010 19:14
  • meus script ficou mes confuso pq a pagian do forum colocou tudo em uma linha... segue script identado..

    DECLARE @Recno INT
    Declare @Emp varchar(2), @sqlStatement NVARCHAR(max), @sqlParameters NVARCHAR(max)
    Set @Emp ='95'

    SET @sqlParameters = '@result INT OUTPUT'
    --SET @sqlStatement = 'select @result = isnull(max(R_E_C_N_O_),1)+1 from CT2'+@Emp+'0'
    EXEC sp_executesql @sqlStatement, @sqlParameters, @result = @Recno OUTPUT
    PRINT @Recno

    att.
    Mrcelo Fernandes


    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    sexta-feira, 16 de abril de 2010 19:18
    Moderador