5

我有一个动态查询,我在存储过程中使用 exec 命令来执行它。

现在我只想从执行查询的结果中提取前 10 行。

我无法修改查询,我只想从结果中提取

这是我正在执行的查询。

 DECLARE @Str nvarchar(max)
 SET @str = 'SELECT *
      FROM tblC6FD_QueryBuilderMaster'

 EXEC (@str)

如何在不修改实际查询的情况下限制结果

谢谢

4

2 回答 2

9

使用ROWCOUNT

DECLARE @Str nvarchar(max)
SET @str = 'SELECT * FROM tblC6FD_QueryBuilderMaster'

SET ROWCOUNT 10
EXEC (@str)
SET ROWCOUNT 0
于 2013-08-12T12:00:29.790 回答
2

'old skool' 方法是有一个中间临时表......

CREATE TABLE #temp (yourColName yourType)

DECLARE @Str nvarchar(max)
SET @str = 'SELECT *
      FROM tblC6FD_QueryBuilderMaster'

INSERT INTO #temp 
EXEC (@str)

SELECT TOP 10 *
FROM #temp 

...和“新”(SQL Server >= 2005)方式将使用 ROWCOUNT 方法,就像@eKek0 所做的那样。

于 2013-08-12T12:01:05.693 回答