在測試中看到了這一點 - 我的SQL體驗是基本的CRUD相關的,我不確定這是什麼意圖,如果有的話?TSQL存儲過程廢話
CREATE PROCEDURE [dbo].[uspGetAccountID]
(
@AccountID int = 1
)
AS
SELECT @AccountID
GO
如果程序調用如下,爲什麼會輸出?
exec dbo.uspGetAccountID 5
在測試中看到了這一點 - 我的SQL體驗是基本的CRUD相關的,我不確定這是什麼意圖,如果有的話?TSQL存儲過程廢話
CREATE PROCEDURE [dbo].[uspGetAccountID]
(
@AccountID int = 1
)
AS
SELECT @AccountID
GO
如果程序調用如下,爲什麼會輸出?
exec dbo.uspGetAccountID 5
看起來像一個測試存儲過程。它需要一個名爲@AccountID
的參數,默認值爲1
。
exec dbo.uspGetAccountID 5
會導致5
被選中。
exec [dbo].[uspGetAccountID]
-- should result in 1
exec [dbo].[uspGetAccountID] 5
-- should result in 5
零不是代碼的結果,它是return value
SSMS實際上產生這種
USE [MyDB]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[uspGetAccountID]
@AccountID = 5
SELECT 'Return Value' = @return_value
GO
所以,你將不得不2個的結果集。一個代碼,一個用於返回代碼
在程序中添加RETURN 42
的代碼SELECT
後,您將獲得第二個結果42 ...
謝謝。我認爲這是一個愚蠢的小事,或者看着我不知道的一些微妙之處。 –
其結果將是5 @AccountID INT = 1設置一個默認值。所以,如果你運行你的proc與5將返回5. –
確實有這個過程的廢話,但它可能用來有意義的變化發生之前,使它在目前的狀態。 –
這對我來說是顯而易見的答案,但我在Management Studio中運行它,它返回0.更大的問題就成爲了這樣一個聲明的意圖。 –