存储过程在SQL Server 2017中为OUTPUT参数返回null

时间:2019-10-26 14:03:15

标签: sql-server tsql

请帮助我在下面的代码中查找错误。

CREATE PROCEDURE dbo.SelectCustomer2
    (@customerId INT OUTPUT)
AS
BEGIN
    SET NOCOUNT ON;

    SELECT @customerId = SCOPE_IDENTITY();

    SELECT * 
    FROM Sales.Customer
    WHERE CustomerID = @customerId;
END

--Executing SelectCustomer
DECLARE @lastRowId int

EXEC dbo.SelectCustomer2 @customerId = @lastRowId OUTPUT;

SELECT @lastRowId AS RowId

我在这里做什么错了?

谢谢。

1 个答案:

答案 0 :(得分:4)

SCOPE_IDENTITY

返回插入到同一作用域的标识列中的最后一个标识值。范围是一个模块:存储过程,触发器,函数或批处理。因此,如果两个语句在同一存储过程,函数或批处理中,则它们在同一范围内。

如果在您的范围内没有任何插入SCOPE_IDENTITY();为空

SCOPE_IDENTITY