1

在测试中看到了这一点——我的 SQL 体验与基本的 CRUD 相关,我不确定这样做的目的是什么,如果有的话?

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

如果按如下方式调用该过程,输出将是什么,为什么?

exec dbo.uspGetAccountID 5

4

4 回答 4

4

零不是代码的结果,它是返回值

SSMS 实际上会生成这个

USE [MyDB]
GO

DECLARE @return_value int

EXEC    @return_value = [dbo].[uspGetAccountID] 
        @AccountID = 5

SELECT  'Return Value' = @return_value

GO

所以你会有2个结果集。一个用于代码,一个用于返回代码

RETURN 42在 之后的过程中的代码中添加 a SELECT,您会在第二个结果中得到 42...

于 2013-06-18T09:43:00.660 回答
0
exec [dbo].[uspGetAccountID] 
-- should result in 1
exec [dbo].[uspGetAccountID] 5
-- should result in 5
于 2013-06-18T09:00:37.480 回答
0

结果将是 5。

仅在未提供任何值时才分配参数的默认值。

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

MSDN 文章

于 2013-06-18T08:57:41.617 回答
0

看起来像一个测试存储过程。它接受@AccountID一个默认值为 的参数1

exec dbo.uspGetAccountID 5

会导致5被选中。

于 2013-06-18T08:58:21.687 回答