在 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
尝试通过从一个 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