在测试中看到了这一点——我的 SQL 体验与基本的 CRUD 相关,我不确定这样做的目的是什么,如果有的话?
CREATE PROCEDURE [dbo].[uspGetAccountID]
(
@AccountID int = 1
)
AS
SELECT @AccountID
GO
如果按如下方式调用该过程,输出将是什么,为什么?
exec dbo.uspGetAccountID 5
在测试中看到了这一点——我的 SQL 体验与基本的 CRUD 相关,我不确定这样做的目的是什么,如果有的话?
CREATE PROCEDURE [dbo].[uspGetAccountID]
(
@AccountID int = 1
)
AS
SELECT @AccountID
GO
如果按如下方式调用该过程,输出将是什么,为什么?
exec dbo.uspGetAccountID 5
零不是代码的结果,它是返回值
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...
exec [dbo].[uspGetAccountID]
-- should result in 1
exec [dbo].[uspGetAccountID] 5
-- should result in 5
看起来像一个测试存储过程。它接受@AccountID
一个默认值为 的参数1
。
exec dbo.uspGetAccountID 5
会导致5
被选中。