declare @db varchar(20),@km varchar(20),@str varchar(200)
       select @db='F21'
       select @km='F21..tb_f_vcdata'
       SET @str='select * from '+@km+' where vcyer=2003'
       exec(@str)

解决方案 »

  1.   

    declare @km varchar(20)
    select @km='F21..tb_f_vcdata'
    Exec('select * from '+ @km + ' where vcyer = 2003')
      

  2.   

    declare @db varchar(20),@km varchar(20)
           select @db='F21'
           select @km='F21..tb_f_vcdata'
           exec('select * from ['+@km+' where vcyer=2003')
      

  3.   

    declare @db varchar(20),@km varchar(20)
    select @db='F21'
    select @km='F21..tb_f_vcdata'
    exec ('select * from '+@km+' where vcyer=2003')
      

  4.   


    给你一个例题
    create  table aii (i datetime,di varchar(100))
    insert into aii select '20030918','hn'
    insert into aii select '20030918','hn'
    insert into aii select '20030901','hn'
    insert into aii select '20031001','gd'
    insert into aii select '20031001','gd'
    gocreate  table ai (i datetime,di varchar(100))
    insert into ai select '20030918','hn'
    insert into ai select '20030918','hn'
    insert into ai select '20030901','hn'
    insert into ai select '20031001','gd'
    insert into ai select '20031001','gd'
    gocreate proc proc_1
    @stime datetime,@etime datetime,@di varchar(100),@tablename nvarchar(100)
    as
    declare @sql nvarchar(4000)
    select @sql='select * from '+@tablename+'  where i BETWEEN @stime and @etime and di=@di'
    print @sql
    exec sp_executesql @sql,
    N'@stime datetime,@etime datetime,@di varchar(100)',
    @stime=@stime,@etime=@etime,@di=@digoexec proc_1 '2003/09/01','2003/10/01','hn','ai'
    go
    exec proc_1 '2003/09/01','2003/10/01','hn','aii'
    go