try:
declare @tableName varchar(20) ---要查询的表名
declare @b varchar(10),@sql varchar(1000)
set @b='sdfsdf'
set @sql='select * from'+ @tableName+' where a='+@b
exec(@sql)

解决方案 »

  1.   

    exec('select * from '+@tableName +'where a='+@b)if @@rowcount>0
     ...
      

  2.   

    set @sql='select * from'+ @tableName+' where a='+@b
    exec(@sql)
      

  3.   

    set @sql='select * from'+ @tableName+' where a='+@b
    exec(@sql)
    这个我知道,我要问的是怎么根据查询结果进行相应操作,或者说怎么把查询结果去出来。
      

  4.   

    这要看你想用怎么操作这个结果集了?
    用动态语句执行的结果集不能象视图一样直接连接到from ...后面处理!
    建立你把这个结果集写到一临时表中,那样就好处理了!
      

  5.   

    关注!不过顺便问一下,如果 a 是 varchar 类型的,
    print @sql 后,结果是 
    select * from tablename where a = value
    这样会出错,请问如何在 value 的两端加上 ''。谢谢!!!
      

  6.   

    先建立一个临时表:create table TableA( ... ),其结构与查询出来的数据相同;其次,运行insert into TableA exec(@sql),将查询结构获得;最后,直接使用表TableA中的数据,进行后继处理;
      

  7.   

    declare @sql varchar(2000)
    declare @tab varchar(50)
    select @tab ='fff'
     select   @sql = '  select *  into #tt from ' +@tab + ' 加查询条件 '
     select   @sql = @sql + 'select * from #tt '
     exec(@sql)