2016-01-23 92 views
0

我在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

只需放入第二個輸入變量,以選擇要查詢的表格並在其中使用IF語句。

CREATE PROCEDURE dbo.spGetId 
     (
     @Email VARCHAR(50), 
     @QuerUsers INT 
     ) 
    AS 
IF @QuerUsers = 1 
BEGIN 
     SELECT Id FROM tblUserRegistrations WHERE [email protected] 
     RETURN 
END 
SELECT Id FROM tblProviderRegistrations WHERE [email protected] 
    RETURN 
0

好的,如果你打算髮送一個同樣的電子郵件給這兩個SP獲得id。你可以將你的sql查詢改成內連接。哪兩個表將通過電子郵件相互連接。您也可以使用別名將名稱放在單獨的ID上。

Visit this link for reference(SQL Innerjoin)