declare @count int
declare @table varchar(800)
declare @sql varchar(800)
select @sql='slect @count=select count(*) from '+@table
exec(@sql)
declare @table varchar(800)
declare @sql varchar(800)
select @sql='slect @count=select count(*) from '+@table
exec(@sql)
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)
declare @tablename varchar(100)select @count='select count(*) from'+ @tablename
-----------------------
如果楼主想要在动态SQL中返回一个结果程序,比较麻烦,而用实现上面这个语句,还得在动态SQL里
声明@count,而且执行完exec后,变量也就没了,建议楼主用下面的方法得到行数:
select 行数=rows from sysindexes where name='表名'
不过问题没有解决
sunshareforever(阳光)兄分析语法正确,但执行时提示 select 附近有语法错误,yjdn(无尽天空)兄的可以执行,但怎样在外调用@count昵,我在最后加一句 :
select @count 提示@count没有定义Asplin(--妞子头--面包会有的) 和 sunshareforever(阳光)兄的是一样的再次谢谢各位期待正确方法!
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)如果你的目的只是查询到行数,就用我上面的语句.
用这句 select 行数=rows from sysindexes where name='表名'
这里表名是临时表
请问应怎样写呢?
select 行数=rows from sysindexes where name=##'表名' 不对
exec('select 行数=rows from sysindexes where name=##'+表名) 也不行
declare @tablename varchar(20)
set @tablename='#表名' --加上上##才是一个完整的表名
set @sql='select count(*) from '+@tablename
exec(@sql)
declare @tablename varchar(20)
set @tablename='##表名' --加上上##才是一个完整的表名
set @sql='select count(*) from '+@tablename
exec(@sql)
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 就是了
as
return (select count(*) from 表)
declare @r int
exec @r=p_t
print @r