declare @ny varchar(100)
declare @sql varchar(8000)
set @ny = '201104'
set @sql = 'select * from tb' + ltrim(@ny) + '_heji'
exec(@sql)
下面是我存储过程。如果我不想上楼上那样定义@sql,就按我下面的方式去写? 可以做吗?CREATE PROCEDURE dbo.cx  
@ny varchar(9) AS
set nocount on
  begin
select * from tb@ny_heji
end
go

解决方案 »

  1.   

    CREATE PROCEDURE dbo.cx   
    @ny varchar(9) AS
    set nocount on
      begin
       exec('select * from tb '+@ny+'_heji')
      end
    go
      

  2.   

    你本身表名就是动态的,又不是固定的,只能用动态SQL来拼。
      

  3.   

    我这条存储过程太复杂了呀 该怎么拼呢?
    select * into #b from(select * from opendatasource(
                   'sqloledb',
                   'data source=192.168.252.128;User ID=sa;Password=123456'
    ).test.dbo.tb'+@ny+'_heji a )b