none
Transformar em comando dinamico RRS feed

  • Pergunta

  • boa tarde

    estou precisando de um apoio para transformar esse comando em dinamico

    declare @tabela = varchar(255)

    declare @x = varchar(25)

    declare @codigo = tinyint

    declare @sql = nvarchar(max)


    set @tabela = 'banco.dbo.cadastro'

    set @codigo = 10

    o comando que quero transformar em dinamico é esse

    select top 1 @x = nome from @tabela where codigo = @codigo

    estou fazendo 

    set @sql = 'select top 1 ' + @x '+' = nome from ' + @tabela + ' where codigo = ' + @codigo

    exec (@sql)

    O que esta errado?

    Obrigada

    quarta-feira, 18 de janeiro de 2017 17:12

Respostas

Todas as Respostas

  • Deleted
    quarta-feira, 18 de janeiro de 2017 17:22
  • Boa tarde,

    haichu1, experimente utilizar uma instrução dinâmica com parâmetros. Ex:

    declare @tabela varchar(255)
    declare @x varchar(25)
    declare @codigo tinyint
    declare @sql nvarchar(max)
    
    set @tabela = 'banco.dbo.cadastro'
    set @codigo = 10
    
    set @sql = 'select top 1 @x = nome from ' + @tabela + ' where codigo = @codigo'
    execute sp_executesql @sql, N'@x varchar(25) output, @codigo tinyint', @x = @x output, @codigo = @codigo
    
    
    

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    quarta-feira, 18 de janeiro de 2017 17:35
  • Uma outra forma pra o SQL server 2012

    declare @tabela  varchar(255) ='banco.dbo.cadastro';
    declare @x  varchar(25) = 'Campo';
    declare @codigo INT =10 ;
    
    declare @sql  nvarchar(max);
    
    
    SET @sql = CONCAT('SELECT TOP 1 ',@x,' = nome',' from ',@tabela,' where ',' codigo =',@codigo)
    
    EXEC(@sql)
    
    
    
    
    
    
    


    Wesley Neves

    quarta-feira, 18 de janeiro de 2017 18:00