SQL Server IF EXISTS THEN 1 ELSE 2

Usando O Servidor Sql 2012. Eu tenho um procedimento armazenado e parte dele verifica se um nome de usuário está em uma tabela. Se for, retorne um 1, Se não, retorne um 2. Este é o meu código:

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

No entanto, continuo a receber o erro abaixo:

sintaxe incorrecta perto de '1'.

Isto é possível com um "se"?

Atenciosamente,

Michael

Author: mendosi, 2016-12-07

5 answers

Se o queres fazer desta maneira, então esta é a sintaxe que procuras;

IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx') 
BEGIN
   SELECT 1 
END
ELSE
BEGIN
    SELECT 2
END
Você não precisa estritamente das declarações, mas provavelmente é melhor entrar nesse hábito desde o início.
 26
Author: Rich Benner, 2018-07-31 08:52:47
Que tal usar o IIF?
SELECT IIF (EXISTS (SELECT 1 FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx'), 1, 2)

Também, se o uso existir para verificar a resistência das linhas, não use *, use apenas 1. Acredito que não tenha custado.

 5
Author: AntDC, 2017-08-25 16:07:35

Qual é a saída que precisas, select ou print ou .. assim por diante.

Por isso, utilize o seguinte código:

IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx') select 1 else select 2
 3
Author: ahmed abdelqader, 2016-12-07 10:47:18

Pode definir uma variável @Result para preencher os seus dados nele

DECLARE @Result AS INT

IF EXISTS (SELECT * FROM tblGLUserAccess WHERE GLUserName ='xxxxxxxx') 
SET @Result = 1 
else
SET @Result = 2
 2
Author: Zeina, 2016-12-07 10:46:42

Em SQL sem SELECT Você não pode resultar em nada. Em vez de IF-ELSE Bloco, prefiro usar CASE para este

SELECT CASE
         WHEN EXISTS (SELECT 1
                      FROM   tblGLUserAccess
                      WHERE  GLUserName = 'xxxxxxxx') THEN 1
         ELSE 2
       END 
 1
Author: Pரதீப், 2016-12-07 11:01:02