在 SQL 服务器存储过程中使用返回值

Using returned value in SQL Server Stored procedure

尝试通过从一个 table 中检索 ID 并使用该值在同一过程中检索结果来获取结果集。

此 returns 正确的用户 ID 但不是旅行者信息。

USE [GrandCelebration]
GO
/****** Object:  StoredProcedure [dbo].[update_system_emails_audit_read_date]    Script Date: 4/21/2015 10:44:52 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


Alter PROCEDURE [dbo].[GetUserID]
    @UniqueKey varchar(20)
AS


DECLARE @ReturnValue int

SELECT @ReturnValue=UserId FROM SystemEmailsAudit WHERE UniqueKey=@UniqueKey;
RETURN @ReturnValue
Go
DECLARE @ReturnValue int
Select * from LeadTravelers where CertificateID = @ReturnValue

您通过修改存储过程 return LeadTravelers table 中的行。

USE [GrandCelebration]
GO
/****** Object:  StoredProcedure [dbo].[update_system_emails_audit_read_date]    Script Date: 4/21/2015 10:44:52 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


Alter PROCEDURE [dbo].[GetUserID]
    @UniqueKey varchar(20)
AS
Begin

    DECLARE @ReturnValue int

    SELECT @ReturnValue=UserId FROM SystemEmailsAudit WHERE UniqueKey=@UniqueKey;

    Select * from LeadTravelers where CertificateID = @ReturnValue

    end 

Go

您可以使用 JOIN 而不是使用变量,

USE [GrandCelebration]
GO
/****** Object:  StoredProcedure [dbo].[update_system_emails_audit_read_date]    Script Date: 4/21/2015 10:44:52 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


Alter PROCEDURE [dbo].[GetUserID]
    @UniqueKey varchar(20)
AS
Begin

        SELECT UserId 
        FROM SystemEmailsAudit 
        WHERE UniqueKey = @UniqueKey;

        SELECT LT.* FROM LeadTravelers LT
        JOIN SystemEmailsAudit SEA 
        ON LT.CertificateID = SEA.UserId
        WHERE SEA.UniqueKey = @UniqueKey;
end 
Go