DECLARE @f VARCHAR(100)
SELECT @f=vCodesham from Com_tSocialitemtrue where vid=5701 
EXEC ('select ' + @f + ',nID from tblSocial5715 where  empID = 51')

解决方案 »

  1.   

    declare @str1 varchar(50),@sql varchar(500)
    set @str1=(select vCodesham from Com_tSocialitemtrue where vid=5701)
    set @sql='select '+@str1+',nID from tblSocial5715 where  empID = 51'
    exec(@sql)
      

  2.   

    你那樣寫的結果,假如你第一個查詢出的結果為 aa
    那麼你第二個查詢實際上變成了
    select 'aa',nID from tblSocial5715 where  empID = 51 結果當然不是你想要的了
      

  3.   

    declare @str1 varchar(50),@sql varchar(500)
    set @str1=(select vCodesham from Com_tSocialitemtrue where vid=5701)
    set @sql='select '+@str1+',nID from tblSocial5715 where  empID = 51'
    exec(@sql)
    你好,可以写成 
    declare @test varchar(20)
    set @sql='select @test='+@str1+',nID from tblSocial5715 where  empID = 51'
    好像不行,提示没有定义@test变量,其实已经定义了!