2016-01-23 5 views
0

Я написал две хранимые процедуры в Visual Studio 2010. Оба возвращают идентификатор. Таким образом, логика одинакова для обеих хранимых процедур. Затем, как написать общую хранимую процедуру для выполнения обоих запросов?Как написать общую хранимую процедуру?

// 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, чтобы получить идентификатор. Вы можете изменить свой sql-запрос на внутреннее соединение. Какая из двух таблиц будет соединяться друг с другом по электронной почте. Вы также можете использовать псевдонимы для ввода имени на отдельный идентификатор.

Visit this link for reference(SQL Innerjoin)

Смежные вопросы