2016-01-19 3 views
0

Я новичок в хранимых процедурах SQL. Мне нужно написать SQL для проверки наличия электронной почты в нескольких таблицах. Если электронное письмо содержит в первой таблице, оно возвращает true и не должно выполнять остальные. Как мудрый, если нет, мне нужно проверить вторую таблицу, и если бы я нашел return true. Наконец, если я нашел в последней таблице, мне нужно вернуть true, а мне нужно вернуть false.Сохраненная процедура проверки наличия электронной почты в таблицах

Я застреваю в этом. Я так пробовал. Дает мне синтаксические ошибки. Пожалуйста, поделитесь мной решением для этого.

USE Users_UserDetials; 
GO 
CREATE PROCEDURE Users.GetUserPermissions 
    @userEmail nvarchar(50), 
    @areaId nvarchar(10), 
    @villageCode nvarchar(10) 
AS 

    SET NOCOUNT ON; 

    IF EXISTS (SELECT 1 FROM Users.GlobalUsers AS GU 
    WHERE GU.UserEmail = @userEmail) 

    ELSE 

    IF EXISTS (SELECT 1 FROM Users.AreaSpecificUsers AS AU 
    WHERE AU.UserEmail = @userEmail) 

    ELSE 

    IF EXISTS (SELECT 1 FROM Users.VillageSpecificUsers AS VU 
    WHERE VU.UserEmail = @userEmail) 

    ELSE 

    '0' 

GO 
+0

я потерял другой ответ, который был совершенным. Я тестировал и работал отлично. К сожалению, он удален. – SPKan

ответ

2
USE Users_UserDetials; 
    GO 
    CREATE PROCEDURE Users.GetUserPermissions 
    @userEmail nvarchar(50), 
    @areaId nvarchar(10), 
    @villageCode nvarchar(10) 
AS 

SET NOCOUNT ON; 

IF EXISTS (SELECT 1 FROM Users.GlobalUsers AS GU 
WHERE GU.UserEmail = @userEmail) 
BEGIN 
SELECT 1 
END 
ELSE 

IF EXISTS (SELECT 1 FROM Users.AreaSpecificUsers AS AU 
WHERE AU.UserEmail = @userEmail) 
BEGIN 
SELECT 1 
END 
ELSE 

IF EXISTS (SELECT 1 FROM Users.VillageSpecificUsers AS VU 
WHERE VU.UserEmail = @userEmail) 
BEGIN 
SELECT 1 
END 
ELSE 

BEGIN 
SELECT 0 
END 

END 
+0

Это нормально, но вы также должны обратиться к пользователю на https://msdn.microsoft.com/en-us/library/ms182717.aspx и https://msdn.microsoft.com/en-us/library/ ms190487.aspx. Таким образом, пользователь может продолжить свое образование за пределами повторения. – JamieSee

+0

@JamieSee Пожалуйста, дайте мне знать, что данный подход работает, если нет, я могу удалить свой пост –

+0

Похоже, он должен работать. Я просто хотел сказать, что предоставление дополнительной информации поможет сделать ответ еще более полезным. – JamieSee

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