declare @a varchar(50)
set  @a =(select name from syscolumns where id=object_id('table') and syscolumns.colorder  in(6))
select @a from table 比如@a='abc'为什么上面的结果等于select abc from table 呢?

解决方案 »

  1.   

    错了 ;;是不等于select abc from table 的结果
      

  2.   

    select @a from table  => exec('select ' +@a+' from table')
      

  3.   

    declare @a varchar(50)
    set  @a =(select name from syscolumns where id=object_id('table') and syscolumns.colorder  in(6))
    print @a
    declare @sql nvarchar(4000)
    set @sql='select ' +@a  + ' from table '
    exec (@sql)
      

  4.   

    declare @a varchar(50)
    set  @a =(select name from syscolumns where id=object_id('table') and syscolumns.colorder  in(6))
    exec('select '+ @a +' from table')
      

  5.   

    select @a from table 
    查询会当你是这样的
    select 'abc' from table 
    改为动态
      

  6.   

    要用动态sql语句呀.
    如:
    declare @str varchar(1000)
    set @str='select * from table1'
    exec (@str)这样才可以呀,而且必须加括号.
      

  7.   

    declare @a varchar(50)
    set  @a =(select name from syscolumns where id=object_id('table') and syscolumns.colorder  in(6))
    exec('select '+@a+' from table ')
      

  8.   

    declare @a varchar(50)
    set @a=''
    select @a=@a+ name from syscolumns where id=object_id('jobs')-- and syscolumns.colorder  in(6))
    select  @a