TSQL存储过程废话

问题描述:

在测试中看到了这一点 - 我的SQL体验是基本的CRUD相关的,我不确定这是什么意图,如果有的话?TSQL存储过程废话

CREATE PROCEDURE [dbo].[uspGetAccountID] 
(
     @AccountID int = 1 
) 
AS 
     SELECT @AccountID 
GO 

如果程序调用如下,为什么会输出?

exec dbo.uspGetAccountID 5

+2

其结果将是5 @AccountID INT = 1设置一个默认值。所以,如果你运行你的proc与5将返回5. –

+0

确实有这个过程的废话,但它可能用来有意义的变化发生之前,使它在目前的状态。 –

+0

这对我来说是显而易见的答案,但我在Management Studio中运行它,它返回0.更大的问题就成为了这样一个声明的意图。 –

其结果将是5.

上参数的默认值是否已经提供任何值只分配。

您可以使用可选参数 指定可选参数的默认值来创建存储过程。当执行存储的 过程时,如果未指定其他值 ,则使用默认值。

MSDN Article

看起来像一个测试存储过程。它需要一个名为@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

谢谢。我认为这是一个愚蠢的小事,或者看着我不知道的一些微妙之处。 –