2011-01-05 68 views
1

我想在.NET中構建一個設計器,並希望能夠從存儲過程中檢索輸出的列和列類型而不調用它,以便設計器可用於映射輸出。這可能嗎?我甚至願意在必要時使用非託管API。有沒有辦法找出存儲過程返回而沒有運行它?

+0

不要這樣想。請參閱相關的[Microsoft Connect項目](https://connect.microsoft.com/SQLServer/feedback/details/525653/stored-procedures-should-expose-detailed-contracts)。編輯:雖然實際上Visual Studio強類型數據集設計器在一定程度上執行此操作... – 2011-01-05 15:05:03

回答

3

我相信你要找的是SET FMTONLYDocumentation)。

這使您可以執行一個SP(或select語句)並查看將在沒有實際執行查詢的情況下返回哪些列。

+0

通過SQL事件探查器,我看到ODBC,OLE-DB和/或其他低級API使用此技巧。 Upvoted,但我不知道使用它會多麼容易。 – 2011-01-05 15:09:26

+0

謝謝。我認爲這會起作用。它似乎返回所有可能的返回值,即使它們有條件地返回。 – 2011-01-05 15:21:55

1

這通常是不可能的,因爲即使是單個存儲過程也可以返回不同的結果集,具有不同的列或列數據類型。

0

在極端情況下,即使返回的結果集的數量可能取決於參數,並且存儲過程使用動態sql時,它絕對不可能。

相關問題