2011-07-31 49 views
0

如何返回以下存儲過程中由星號標記的最內部SELECT語句的計數作爲輸出參數?從包含多個派生表的存儲過程返回輸出參數

Create procedure MySp 
AS 
Select RowNumber,NewsId From 
(
    Select Row_Number() Over (ORDER BY FirstVisit) as 'RowNumber',NewsId From 
     (
      * Select Distinct NewsId,FirstVisit,PublishDate From VwNewsPack 
     ) as t 
) as tt   
Where NewsId between 10 and 20 
+1

你應該用你正在使用的RDBMS標記這個,而不是你的問題中的隨機單詞。 –

+0

感謝你的建議 –

+0

不,不是用* RDBMS *這個詞,而是你正在使用的RDBMS的名字* ...... Oracle? DB2? SQL Server? Postgres的?除非我們知道這個查詢是用於哪個RDBMS,否則這個問題是無法回答的。 –

回答

2

你不能在一個這樣做。也就是說,兩者都分配給一個變量並選擇一個結果集。這是另一個。

您可以返回一個額外的列:

Select RowNumber,NewsId,InnerCount From 
(
    Select Row_Number() Over (ORDER BY FirstVisit) as 'RowNumber', NewsId 
     , COUNT(*) OVER() AS InnerCount 
    From 
     (
     Select Distinct NewsId,FirstVisit,PublishDate From VwNewsPack 
    ) as t 
) as tt   
Where NewsId between 10 and 20 

如果這還不夠好,那麼你就需要一個臨時表內選擇,並指定@@ ROWCOUNT作爲變量

+0

謝謝,但你的第一個解決方案不起作用。它迫使我使用group by子句。 –

+0

@Vahid Ghadiri:對不起,現在添加了OVER子句。應該工作 – gbn

+0

它的工作。非常感謝 –

相關問題