2012-02-05 134 views
0

我有叫usp_getTotalOrder一個存儲過程,它看起來像如何在sql中知道總記錄返回存儲過程?

Select * from Order where CompanyID = 1; 

現在,我有一個包含存儲過程的名稱表。

在我的BLL中,我有一個存儲過程名稱。我想創建包含一個參數StoredProcedureName函數,並返回總的行數是一樣

Declare @str varchar(50) 
Set @str='GetOrders'; // Stored Procedure Name 
Exec @str 

但它不返回,我想從存儲過程來獲得其函數名總行數。

任何想法? 請幫忙.....

+0

我想統計存儲過程返回的記錄。 語法不成問題。 – 2012-02-05 21:55:15

回答

5

看看@@ROWCOUNT

http://technet.microsoft.com/en-us/library/ms187316.aspx

你也許能夠使用的東西,如:

Declare @str varchar(50) 
Set @str='GetOrders'; // Stored Procedure Name 
Exec @str 
SELECT @@ROWCOUNT 
+0

這工作完美。 – ErikE 2012-02-05 23:28:23

+0

你如何用存儲過程參數做到這一點? – Ally 2012-12-12 15:58:57

+0

@Ally我沒有跟隨你想要做的事情。你是否試圖在存儲過程中將行計數作爲輸出參數返回?如果是這樣,假設您的參數名爲'@ rowCount'。然後在你的存儲過程結束時,你會做'SELECT @rowCount = @@ ROWCOUNT' – csm8118 2012-12-13 17:58:36

1

您是否想從sproc中計算結果集中的行數? 在這種情況下,你可以這樣做:

INSERT INTO #Orders 
Exec @str 

SELECT COUNT(*) 
FROM #Orders 

,或者您可以使用表變量來代替臨時表。

1

可以通過輸出參數或者返回值從SP返回的行數。當然,您必須將該輸出參數添加到SP中,並在SP中將其設置爲COUNT(*)。

DECLARE @o_count INT 

EXEC GetOrder @o_count = @count OUT 
+0

請注意,在讀取由proc返回的行集合中的所有行之前,您不能使用輸出參數 - 除了行之外,使rowcount作爲輸出參數基本沒有意義。 – 2012-02-05 22:30:11

+0

您可以計算SP查詢中的行數。 – pistipanko 2012-02-05 22:56:05

+0

如果您返回一個行集合或集合並將計數放入輸出變量中,您將無法進入計數輸出變量,直到消耗完所有行後,使其通常毫無意義。 http://msdn.microsoft.com/en-us/library/ms971497.aspx#gazoutas_topic6解決方法是在第一個行集中返回計數,而不是作爲輸出變量。 – 2012-02-05 23:25:32