2011-12-21 38 views
3

我有一個小的存儲過程,需要返回一個記錄計數(一個單個值值)。有什麼更好的使用? A RETURN返回結果還是參數OUTPUT返回結果?在TSQL存儲過程中返回單個值有什麼更好:RETURN或OUTPUT?

我正在使用C#/ .Net來與SQL服務器對話。

+0

更好的是什麼?性能?可讀性?最驚喜?還有別的嗎? – Oded 2011-12-21 09:47:32

+0

@付款jep,請選擇。我試圖理解爲什麼在單一結果的情況下一個人會比另一個人好。 – 2011-12-21 09:48:15

回答

4

使用輸出參數。

它是更少資源密集型處理在客戶端

並返回比通過SELECT數據集一個標量參數(或OUTPUT子句等)被限制爲int數據類型。這裏沒關係,但通常返回將用於狀態和錯誤

+0

那麼基本上使用返回是功能的錯誤使用? – 2011-12-21 10:03:42

+1

@ KeesC.Bakker:是的。這也是不可靠的情況下錯誤http://stackoverflow.com/questions/2965211/sql-server-stored-procedure-return-code-oddity – gbn 2011-12-21 10:09:51

+0

你能評論這個問題的標量嗎? http://stackoverflow.com/questions/8589819/what-is-better-to-return-single-value-from-stored-procedure-to-net-output-para – 2011-12-21 12:40:20

1

如果您已經知道您的SQL語句的執行會返回一行數據,那麼您應該始終優先使用帶有輸出參數的存儲過程來代替單行選擇語句。

使用存儲過程優於在應用程序代碼中嵌入簡單SQL語句有幾個優點。除了所有這些優點之外,您保存的不是打開記錄集以獲取數據,您只需使用輸出參數調用存儲過程即可。當您使用記錄集時,數據源對象返回的查詢結果包括數據和元數據。元數據通常比數據大得多,或者是查詢結果的重要部分。因此,您可能希望使用具有輸出參數的存儲過程。


我認爲return,並以類似的方式output工作。但是,通常,return最常用於從過程返回狀態結果或錯誤代碼。

+0

我沒有在代碼中嵌入sql。我正在使用存儲過程。 – 2011-12-21 10:04:32

+0

但是你在上面做一個「select」來返回信息嗎? – 2011-12-21 10:07:02

+0

那麼......實際的問題是,是用一個返回值還是用一個out參數來做。我沒有返回'select count(*)...' – 2011-12-21 12:18:53

0

我會建議使用OUTPUT參數,因爲它的成本較低。返回可以在這裏使用,因爲您正在返回count(int類型),但這不可取,因爲返回用於狀態或錯誤。

相關問題