TSQL存储过程废话
问题描述:
在测试中看到了这一点 - 我的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 ...
+0
谢谢。我认为这是一个愚蠢的小事,或者看着我不知道的一些微妙之处。 –
其结果将是5 @AccountID INT = 1设置一个默认值。所以,如果你运行你的proc与5将返回5. –
确实有这个过程的废话,但它可能用来有意义的变化发生之前,使它在目前的状态。 –
这对我来说是显而易见的答案,但我在Management Studio中运行它,它返回0.更大的问题就成为了这样一个声明的意图。 –