declare   @result   varchar(20)
declare   @col   varchar(20)
set   @col='column_name'
declare   @id   int   --??
set   @id=3
declare   @sql   nvarchar(1000)  
set   @sql   =   'select   @result   ='''+@col   +'''   from   table_name   where   id   ='''+ltrim(@id)+''''   --error!   请问怎么解决
exec (@sql)

解决方案 »

  1.   

    declare   @result   varchar(20) 
    declare   @col   varchar(20) 
    set   @col='column_name' 
    declare   @id   int   --?? 
    set   @id=3 
    declare   @sql   nvarchar(1000)   
    set   @sql   =   'select   @result   ='+@col   +'   from   table_name   where   id   ='+rtrim(@id)   --error!   请问怎么解决 
    exec   sp_executesql   @sql,N'@result varchar(20) output',@result output--select @result
      

  2.   


    ---例子
    declare @result Nvarchar(20)    ---这个地方要用Nvarchar类型
    declare @col    Nvarchar(20)  ---这个地方要用Nvarchar类型
    set @col='name'  ---这个地方换成你想要的列名
    declare @id    int   
    set    @id=1  ---换成你要的ID
    declare @sql    Nvarchar(1000)   
    set    @sql   =   N'select   @result   ='+@col   +'   from   sysobjects   where   id   ='+rtrim(@id)  --这个地方要改,因为你的ID是int,在连接字符串时报错,要用rtrim()转成字符串
    exec   sp_executesql   @sql , N'@result Nvarchar(20)','@result output' ---这里的@result和上面的一样
      

  3.   


    exec   sp_executesql   @sql , N'@result Nvarchar(20)','@result output'