我在Visual Studio 2010中编写了两个存储过程。两者都返回了Id。因此两个存储过程的逻辑相同。那么如何编写一个公共存储过程来执行两个查询?
// First stored procedure
CREATE PROCEDURE dbo.spGetId
(@Email VARCHAR(50))
AS
SELECT Id
FROM tblUserRegistrations
WHERE Email = @Email
RETURN
// Second stored procedure
CREATE PROCEDURE dbo.spGetProviderId
(@Email VARCHAR(50))
AS
SELECT Id
FROM tblProviderRegistrations
WHERE Email = @Email
RETURN
因此两个存储过程中的逻辑是相同的。那么如何编写一个公共存储过程来执行这两个查询呢?我的意思是表名应该是动态的吗?
答案 0 :(得分:0)
只需输入第二个输入变量来选择要查询的表,并在其中使用IF
语句。
CREATE PROCEDURE dbo.spGetId
(
@Email VARCHAR(50),
@QuerUsers INT
)
AS
IF @QuerUsers = 1
BEGIN
SELECT Id FROM tblUserRegistrations WHERE Email=@Email
RETURN
END
SELECT Id FROM tblProviderRegistrations WHERE Email=@Email
RETURN
答案 1 :(得分:0)
好的,如果您要为该SP发送同一封电子邮件以获取ID。您可以将sql查询更改为内连接。哪两个表将使用电子邮件相互加入。您还可以使用别名将名称放在单独的ID上。