SQL Server IF EXISTS THEN 1 ELSE 2

Использование Sql Server 2012. У меня есть хранимая процедура, и часть ее проверяет, находится ли имя пользователя в таблице. Если это так, верните 1, если нет, верните 2. Это мой код:

IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx') 1 else 2

Однако я продолжаю получать следующую ошибку:

Неправильный синтаксис около '1'.

Возможно ли это с помощью IF EXIST?

Привет,

Майкл

Ответ 1

Если вы хотите сделать это таким образом, то вам нужен синтаксис;

IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx') 
BEGIN
   SELECT 1 
END
ELSE
BEGIN
    SELECT 2
END

Вам строго не нужны утверждения BEGIN..END но, вероятно, лучше всего привыкнуть к этой привычке с самого начала.

Ответ 2

Как насчет использования IIF?

SELECT IIF (EXISTS (SELECT 1 FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx'), 1, 2)

Кроме того, если вы используете EXISTS для проверки существования строк, не используйте *, просто используйте 1. Я считаю, что это имеет наименьшую стоимость.

Ответ 3

В SQL без SELECT вы ничего не можете добиться. Вместо блока IF-ELSE я предпочитаю использовать инструкцию CASE для этого

SELECT CASE
         WHEN EXISTS (SELECT 1
                      FROM   tblGLUserAccess
                      WHERE  GLUserName = 'xxxxxxxx') THEN 1
         ELSE 2
       END 

Ответ 4

Какой результат, который вам нужен, select или print или.. и так далее.

поэтому используйте следующий код:

IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx') select 1 else select 2

Ответ 5

Вы можете определить переменную @Result, чтобы заполнить ваши данные в ней

DECLARE @Result AS INT

IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx') 
SET @Result = 1 
else
SET @Result = 2