declare @count int
declare @table varchar(800)
declare @sql varchar(800)
select @sql='slect @count=select count(*) from '+@table
exec(@sql)

解决方案 »

  1.   


    declare @sql varchar(1000)
    declare @tablename varchar(20)
    set @tablename='volumn'             --在这里写入表名
    set @sql='declare @count int ;select @count= count(*) from '+@tablename +';print @count'
    exec(@sql)
      

  2.   

    declare @count int
    declare @tablename varchar(100)select @count='select count(*) from'+ @tablename  
      

  3.   

    slect @count=select count(*) from tablename 
    -----------------------
    如果楼主想要在动态SQL中返回一个结果程序,比较麻烦,而用实现上面这个语句,还得在动态SQL里
    声明@count,而且执行完exec后,变量也就没了,建议楼主用下面的方法得到行数:
    select 行数=rows from sysindexes  where name='表名'
      

  4.   

    非常感谢以上各位的热心帮助
    不过问题没有解决
    sunshareforever(阳光)兄分析语法正确,但执行时提示 select 附近有语法错误,yjdn(无尽天空)兄的可以执行,但怎样在外调用@count昵,我在最后加一句 :
                       select @count 提示@count没有定义Asplin(--妞子头--面包会有的) 和 sunshareforever(阳光)兄的是一样的再次谢谢各位期待正确方法!                            
      

  5.   

    如果你要一个返回值的话,
    1)建一个过程,把@count做为一个输出变量。2)或者:用临时表来保存你的输出。
    declare @sql varchar(1000)
    declare @tablename varchar(20)
    set @tablename='volumn'             --在这里写入表名
    set @sql='declare @count int ;select @count= count(*) from '+@tablename +';select @count'
    create table #t(id int)--与返回结果同结构的表
    insert into #t exec (@sql)
    select * from #t
    drop table #t3)如果你的目的只是查询到行数,就用我上面的语句.
      

  6.   

    其实我的目的很简单,就是得到查询的行数
    用这句 select 行数=rows from sysindexes  where name='表名'
    这里表名是临时表
    请问应怎样写呢?
    select 行数=rows from sysindexes where name=##'表名'          不对
    exec('select 行数=rows from sysindexes  where name=##'+表名)  也不行
      

  7.   

    declare @sql varchar(1000)
    declare @tablename varchar(20)
    set @tablename='#表名'             --加上上##才是一个完整的表名
    set @sql='select count(*) from '+@tablename 
    exec(@sql)
      

  8.   

    declare @sql varchar(1000)
    declare @tablename varchar(20)
    set @tablename='##表名'             --加上上##才是一个完整的表名
    set @sql='select count(*) from '+@tablename 
    exec(@sql)
      

  9.   

    declare @sql varchar(1000),@parm nvarchar(100)
    declare @tablename varchar(20)
    declare @count intset @ls_sql = N'SELECT @li_rowcount_s= Count(*) FROM ' + @tablename
    set @parm = N'@li_rowcount_s int OUTPUT'
    execute sp_executesql @ls_sql,@parm, @li_rowcount_s =@count  OUT得出的这个值@count  就是了
      

  10.   

    create proc p_t
    as
     return (select count(*) from 表)
    declare @r int 
    exec  @r=p_t
    print @r