declare @tablename varchar(20)
select @tablename='tb'
exec('select '+@tablename+'.a,table1.b from '+@tablename+',table1 ')

解决方案 »

  1.   

    to  rivery(river)
    这样写 执行的时候出现以下错误
     服务器: 消息 170,级别 15,状态 1,行 1
    第 1 行: '*' 附近有语法错误。
    CREATE PROCEDURE dbo.sp_searchtablename1
    (
      @induaid varchar(10) 
      
    )
    AS
      begin
         
         declare @tablename varchar(20)
         
          if exists(select  industry_tablename.tablename from industry_tablename  where induaid=@induaid)
                   select  @tablename=tablename from industry_tablename where induaid=@induaid 
        exec ('select' +@tablename+'.*,company.companyname from'+@tablename+',company')
       
    end
    GO
    把exec ('select' +@tablename+'.*,company.companyname from'+@tablename+',company')换成exec('select * from'+@tablename)不出错
      

  2.   

    exec ('select' +@tablename+'.*,company.companyname from'+@tablename+',company')
    --->
    exec ('select ' +@tablename+'.*,company.companyname from '+@tablename+',company')注意 下空格
      

  3.   

    'select '部分注意select后面加个空格,否则就跟后面变量连到一起了。
    还有'from '部分也是。