【问题标题】:How can I count the rows of a table created from dynamic SQL?如何计算从动态 SQL 创建的表的行数?
【发布时间】:2017-06-07 18:54:20
【问题描述】:

我有一个包含存储为VARCHAR 的SQL 语句的表。我想计算每个语句返回多少行。我正在将这些语句读入一个名为 @SQL 的临时变量中,并在光标浏览每一行时执行类似的操作:

set @SQL = (select sqlcode from t1 where id = @id)  
set @SQL = 'Select @id, count(*) from (' + @SQL + ') as t';

insert into #myresults

exec(@SQL)

除非其中一条 SQL 语句本身使用临时表或游标,否则这可以正常工作。

【问题讨论】:

  • 您是否尝试过运行语句然后获取@@Rowcount?
  • 这听起来像我要找的。我试试看。
  • 给我带来麻烦的语句以一系列“drop table”和“close cursor”语句结束,所以@@rowCount 返回 0。
  • 您运行的是什么版本的 SQL?如果您使用的是较新版本,则有一些方法可以从查询存储中提取受影响的行
  • SQL Server 2014

标签: sql-server tsql sql-server-2014


【解决方案1】:

将计数分配给变量

DECLARE @mycount int
INSERT INTO #TempTable(ColumnList)
SELECT ColumnList From SomeplaceElse
SET @mycount =@@ROWCOUNT

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
猜你喜欢
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 1970-01-01
  • 2016-05-25
  • 1970-01-01
相关资源
最近更新 更多