TSQL存储过程废话

时间:2013-06-18 08:53:05

标签: sql sql-server tsql

在测试中看到这一点 - 我的SQL经验与CRUD基本相关,我不确定这是什么意思,如果有的话?

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

如果调用过程如下,那将是什么输出?为什么?

exec dbo.uspGetAccountID 5

4 个答案:

答案 0 :(得分:4)

零不是代码的结果,而是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 ...

答案 1 :(得分:0)

结果将是5。

仅在未提供任何值的情况下分配参数的默认值。

  

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

MSDN Article

答案 2 :(得分:0)

看起来像测试存储过程。它采用名为@AccountID的参数,默认值为1

exec dbo.uspGetAccountID 5

会导致5被选中。

答案 3 :(得分:0)

exec [dbo].[uspGetAccountID] 
-- should result in 1
exec [dbo].[uspGetAccountID] 5
-- should result in 5