Sql-Server

帶輸出參數的 SQL 儲存過程

  • January 31, 2019

我知道如何編寫帶有輸出參數的儲存過程。但我不知道為什麼我會使用它而不是僅僅使用一個簡單的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 中的儲存過程之間傳遞值,它們會非常有用。

對於它的價值,我幾乎不使用輸出參數。

引用自:https://dba.stackexchange.com/questions/153738