Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 统计变量中动态生成查询的记录数_Sql_Dynamic_Sql Server 2008 R2_Runtime.exec - Fatal编程技术网

Sql 统计变量中动态生成查询的记录数

Sql 统计变量中动态生成查询的记录数,sql,dynamic,sql-server-2008-r2,runtime.exec,Sql,Dynamic,Sql Server 2008 R2,Runtime.exec,我正在构建一个查询,其中所选列的数量不是固定的,因此我正在生成查询运行时并在存储过程中执行它。但是我现在被卡住了,因为我想根据记录的数量从查询中执行一些操作,但我不知道如何从动态查询中获得记录的数量,而我的查询类似于 DECLARE @RowCount AS numeric(18,0) DECLARE @SQL AS VARCHAR(MAX) Set @SQL ='Select Count(*) From ((Select Col1,Col2,Col3,Col4 From Table1)) as

我正在构建一个查询,其中所选列的数量不是固定的,因此我正在生成查询运行时并在存储过程中执行它。但是我现在被卡住了,因为我想根据记录的数量从查询中执行一些操作,但我不知道如何从动态查询中获得记录的数量,而我的查询类似于

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  = ????..

您能告诉我如何从dynamc查询中获得记录数吗?

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

就这么做吧

DECLARE @SQL AS VARCHAR(MAX)
Set @SQL ='Select COUNT(*) From Table1'
Exec(@SQL)
所以,如果要存储返回的rowcount值,请使用表变量并插入其中

  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 
还可以使用输出变量检索值

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;

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

就这么做吧

DECLARE @SQL AS VARCHAR(MAX)
Set @SQL ='Select COUNT(*) From Table1'
Exec(@SQL)
所以,如果要存储返回的rowcount值,请使用表变量并插入其中

  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 
还可以使用输出变量检索值

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;

您的意思是-获取列数计数吗?不,我是指行数计数为什么不在查询中选择计数?我想您的意思是从select Col1、Col2、Col3中选择计数*,表1中的Col4作为行数检查是否有帮助..您的意思是-获取列数计数吗?不,我是指行数计数为什么不在查询中选择计数?我想您的意思是从表1中选择Col1、Col2、Col3、Col4作为行数检查是否有帮助。。