繁体   English   中英

将动态构建查询的记录数统计到一个变量中

[英]Count Number of records of a Dynamic build query into a variable

我正在建立一个查询,其中所选的列数不固定,所以我在生成查询运行时并在存储过程中执行它。 但是我现在陷入困境,因为我想根据记录数从查询中执行一些操作,但是我不知道如何从动态查询中获取查询数,而我的查询就像

DECLARE @RowCount AS numeric(18,0)
DECLARE @SQL AS VARCHAR(MAX)
Set @SQL ='Select Count(*) From ((Select Col1,Col2,Col3,Col4 From Table1)) as rowcount'
Exec(@SQL)
Set @RowCount  = ????..

能否请您告诉我我如何从dynaimc查询中获取记录数

记录数与SELECT列表中的列无关,除非WHERE子句中提供了某些条件。

做这个

DECLARE @SQL AS VARCHAR(MAX)
Set @SQL ='Select COUNT(*) From Table1'
Exec(@SQL)

因此,如果要存储返回的行数值,请使用表变量并将其插入其中

  DECLARE @SQL AS VARCHAR(MAX)
  DECLARE @rowCountTable TABLE(row_count INT)

  Set @SQL ='Select COUNT(*) From Table1'

  INSERT INTO @rowCountTable 
  Exec(@SQL)


  SELECT * FROM @rowCountTable 

您还可以使用OUTPUT变量检索值

DECLARE @retCount int   
DECLARE @SQL AS NVARCHAR(MAX)
DECLARE @outPut NVARCHAR(50);


SET @SQL = N'Select @retvalOUT=COUNT(*) From Table1'  
SET @outPut = N'@retvalOUT int OUTPUT';

EXEC sp_executesql @SQL, @outPut, @retvalOUT=@retCount OUTPUT;

SELECT @retCount;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM