借助临时表:exec('select '+@ColumnName+' as cols from into t '+@tableName
       + ' where ID='''+@ID+'''')select @temp = cols from tdrop table t

解决方案 »

  1.   

    --用sql自带的northwind库的orders做例子
    declare @tablename varchar(100)
    declare @fieldname varchar(100)
    declare @m_field nchar(100)
    declare @s nvarchar(4000)
    set @tablename='Orders'
    set @fieldname='CustomerID'
    set @s='select @m_field='+@fieldname+' from '+@tablename+' where employeeID=5'
    exec sp_executesql @s,N'@m_field nchar(100) output',@m_field output
    select @m_field
      

  2.   

    --哦,对了,看到楼主还比我多一个变量在where子句中,我也给他加上吧,加了个@employeeid
    declare @tablename varchar(100)
    declare @fieldname varchar(100)
    declare @employeeid int
    declare @m_field nchar(100)
    declare @s nvarchar(4000)
    set @tablename='Orders'
    set @fieldname='CustomerID'
    set @employeeid=5
    set @s='select @m_field='+@fieldname+' from '+@tablename+' where employeeID=@employeeid'
    exec sp_executesql @s,N'@m_field nchar(100) output, @employeeid int',@m_field output,@employeeid 
    select @m_field
      

  3.   

    sp_executesql这个存储过程我还没用过,回去翻翻.呵呵
      

  4.   

    declare @ColumnName ....   <--你的具体类型
    declare @tableName  ....   <--你的具体类型
    declare @ID         ....   <--你的具体类型
    declare @s nvarchar(4000)
    set @ColumnName='...'
    set @tableName='...'
    set @ID=....
    set @s='select @temp='+@ColumnName+' from '+@tableName+' where ID=@ID'
    exec sp_executesql @s,N'@temp 类型,output,@ID 类型',@temp output,@ID
    select @temp
      

  5.   

    --改一下,类型和output之间没有','
    declare @ColumnName ....   --<--你的具体类型
    declare @tableName  ....   --<--你的具体类型
    declare @ID         ....   --<--你的具体类型
    declare @s nvarchar(4000)
    set @ColumnName='...'
    set @tableName='...'
    set @ID=....
    set @s='select @temp='+@ColumnName+' from '+@tableName+' where ID=@ID'
    exec sp_executesql @s,N'@temp 类型 output,@ID 类型',@temp output,@ID
    select @temp
      

  6.   

    动态sql要想传出变量,需要使用sp_executesql,就像冷月无声写的,呵呵
      

  7.   

    set sql='select '+@temp+'='+@ColumnName+' from '+@tableName
           + ' where ID='''+@ID+''''
    exec sp_executesql @s,N'@temp 类型 output,@ID 类型',@temp output,@ID
      

  8.   

    用sp_executesql,因為exec()裡面不能夠還含有變量@temp