2012-08-30 43 views
0

您好我正在寫一個T4模板來爲Sql服務器存儲過程生成訪問器。我使用了CommandBuilder的SMO和DeriveParameters方法的混合來獲取我需要的幾乎所有信息。從C#中的Sql服務器存儲過程檢索結果集的數量#

但是,我無法找到一種方法來確定存儲過程是否返回以及有多少結果集返回。

實質上,我正在尋找一種方法來複制Codesmiths SchemaExplorer CommandResults.Count屬性。

我不想走解析測試的過程。

提前歡呼。

回答

0

據我所知除了解析存儲過程體(除了它可能包含條件和結果數可能會根據它們而變化)之外,沒有辦法做到這一點。

2

SQL Server不存儲關於存儲過程可能返回多少個結果集的任何元數據。可能有0,1或n,這可能會根據存儲過程中的邏輯,傳入的參數值,系統的狀態等而改變 - 檢索元數據時無法解釋的所有內容。即使新的2012年元數據功能只處理在存儲過程中描述結果集的第一個結果集的形狀 - 如果還有更多,那麼您就是自己的。

所以不,我不認爲有任何方法可靠地做到這一點。即使結果集的數量不能因各種因素而改變,你會最好能夠做到的是蹩腳SET FMTONLY ON;把戲(它有其自身的問題)和計數結果:

SET FMTONLY ON; 
EXEC dbo.whatever; 

如果執行存儲過程改變了系統的狀態,這顯然不是好事,但對於報告式存儲過程來說,在很多情況下它可能是可以的。