2012-02-26 67 views
0

我的存储过程(SQL Server 2005)返回一个数据集,其中一个字段除其他外依赖于查询返回的行数。我可以创建一个简化的第一个查询,使我可以获得@@ ROWCOUNT,但在这种情况下,该过程将返回两个集合,这不是我想要的。SQL Server存储过程 - 在选择查询中使用行计数

我试着把第一个查询放在WITH语句中,但还没有找到提取行数的语法,并把它放在我可以在第二个查询中使用的变量中。另一种方法是从第一个查询中获取@@ ROWCOUNT,并告诉过程仅返回第二个查询的结果。

可能有更好的方法来做到这一点,但我在SQL专业知识是非常有限......

感谢您的帮助!

+2

让我们看看查询 – 2012-02-26 17:22:29

回答

3

这是你在找什么?如果没有,请你详细描述你的问题(也许,用代码片段)

alter procedure ComplicatedStoredProcedure as 
    begin 
     declare @lastQueryRowCount int 

     -- Storing the number of rows returned by the first query into a variable. 
     select @lastQueryRowCount = 
      -- First resultset (not seen by caller). 
      (select count(*) from A where ID > 100) 

     -- Second resultset. This will be the actual result returned from the SP. 
     select * from B where SomeDependentField > @lastQueryRowCount 
    end 
+0

是的,就是这样!非常感谢!带有“select @lastRowCount”的行是为我执行技巧的行。 – ConnorsFan 2012-02-26 17:39:58

相关问题