繁体   English   中英

存储的Proc返回2个返回值

[英]Stored Proc returns 2 return values

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

执行存储的proc时,我会得到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

感谢您的快速回复。 我不小心发布了一些不正确的代码,实际存储的过程最后没有SELECT @PersonID。 但是,我认为我错误地将存储的proc标识为我正在处理的问题的根本原因,并且正如响应中所指出的那样,一切正常。

再次感谢您的帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM