Sql-Server
帶輸出參數的 SQL 儲存過程
我知道如何編寫帶有輸出參數的儲存過程。但我不知道為什麼我會使用它而不是僅僅使用一個簡單的
SELECT
語句。一個普通的儲存過程仍然可以在一個網格中返回一個輸出(見下面的例子)。任何人都可以舉一個真實的例子,我可以使用帶輸出參數的 SP 和不帶輸出參數的 SP 嗎?
例子
-- Using output parameter SELECT @var = COUNT(*) FROM table1 WHERE gender = @gender... -- Without output parameter SELECT COUNT(*) FROM table WHERE gender = @gender...
儲存過程中的輸出參數對於將值傳遞回呼叫 T-SQL 很有用,然後呼叫 T-SQL 可以將該值用於其他事情。
假設您有一個儲存過程,它返回給定城市輸入的狀態,狀態作為輸出參數:
CREATE PROCEDURE [dbo].[GetStateFromCity] (@City NVARCHAR(30), @State NCHAR(2) OUTPUT) AS SELECT @State = [State] FROM [ExampleTable] WHERE [City] = @City GO;
您現在可以使用此輸出參數在別處傳遞一個值。
例如:
DECLARE @State int EXEC [dbo].[GetStateFromCity] @City = 'Calgary', @State OUTPUT; -- Do something with this value SELECT @State; -- Do something else EXEC [dbo].[GetInsuranceCompanyByState] @State;
總而言之,如果您只想為客戶端應用程序返回一個值,您可能不需要輸出參數。
但是,如果您想在 T-SQL 中的儲存過程之間傳遞值,它們會非常有用。
對於它的價值,我幾乎不使用輸出參數。