获得作为参数的表名对应的记录条数

wryyu 2015-04-11 12:51:16
现在有一个存储过程,以源表和目标表为参数,程序调用这个存储过程传入源表名和目标表,存储过程开始将源表数据插入到目标表,最后要校验源表和目标表的记录条数是否相同,但是想通过

declare @icount int
declare @SrvTableName varchar(10)
select @icount=count(*) from @SrvTableName

这种方式获得记录条数,但是会报错
改为

exec ('select @icount=COUNT(*)' + 'from ' + @SrvTableName)

也不行,到底该怎么做才可以呢
...全文
97 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wryyu 2015-04-11
  • 打赏
  • 举报
回复
引用 1 楼 AcHerat 的回复:

输出参数 
declare @num int, 
@sqls nvarchar(4000) 
set @sqls='select count(*) from tableName' 
exec(@sqls) 
--如何将exec执行结果放入变量中? 
方法一:
declare @num int,     
   @sqls nvarchar(4000) 
set @sqls='select @a=count(*) from tableName ' 
exec sp_executesql @sqls,N'@a int output',@num output 
select @num     

方法二:

declare @num int,     
   @sqls nvarchar(4000)
set @sqls='select count(*) from newslist '
exec sp_executesql @num=@sqls
print @num
谢谢你,可以了
江南小鱼 2015-04-11
  • 打赏
  • 举报
回复
拼凑的SQL里面不能出现变量! 1#已经有答案了
AcHerat 元老 2015-04-11
  • 打赏
  • 举报
回复

输出参数 
declare @num int, 
@sqls nvarchar(4000) 
set @sqls='select count(*) from tableName' 
exec(@sqls) 
--如何将exec执行结果放入变量中? 
方法一:
declare @num int,     
   @sqls nvarchar(4000) 
set @sqls='select @a=count(*) from tableName ' 
exec sp_executesql @sqls,N'@a int output',@num output 
select @num     

方法二:

declare @num int,     
   @sqls nvarchar(4000)
set @sqls='select count(*) from newslist '
exec sp_executesql @num=@sqls
print @num

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧