存储过程返回2个返回值

时间:2017-01-20 14:16:37

标签: sql sql-server tsql stored-procedures

我有一个存储过程,首先检查是否存在条目,如果是,则更新它然后返回行ID,如果不是,则插入新记录然后返回行ID。

执行存储过程时,我会得到2个返回值,一个带有“@PersonID”字段,另一个带有“返回值”。我很确定这种情况正在发生,因为在IF EXISTS中使用了SELECT语句,但是,我无法想出一种方法来抑制它,我希望有人可以提供帮助。

    ALTER PROCEDURE [dbo].[InsertPerson] 
    -- Add the parameters for the stored procedure here
    @FirstName nvarchar(50),
    @LastName nvarchar(50),
    @PersonID int OUT
AS
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    IF( EXISTS (SELECT PersonID FROM People 
                WHERE FirstName = @FirstName AND LastName = @LastName))
    BEGIN

        SET @PersonID = (SELECT PersonID
                 FROM People
                 WHERE FirstName = @FirstName
                       AND LastName = @LastName)

        UPDATE People
        SET
        FirstName = @FirstName,
        LastName = @LastName
        WHERE PersonID = @PersonID
    END
    ELSE

    BEGIN

    INSERT INTO People (FirstName, LastName) VALUES(@FirstName, @LastName)
    SET @PersonID = SCOPE_IDENTITY()
    SELECT @PersonID
END

1 个答案:

答案 0 :(得分:0)

感谢您的快速回复。我意外地发布了一些不正确的代码,实际存储的proc在最后没有SELECT @PersonID。但是,我认为我错误地将存储过程确定为我正在处理的问题的根本原因,并且在响应中指出一切都按预期工作。

再次感谢您的帮助