web-dev-qa-db-fra.com

SQL Server SI EXISTE ALORS 1 AUTRE 2

Utilisation de SQL Server 2012. J'ai une procédure stockée et une partie de celle-ci vérifie si un nom d'utilisateur est dans une table. Si c'est le cas, retourne un 1, sinon, retourne un 2. Voici mon code:

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

Cependant, je continue à recevoir l'erreur ci-dessous:

Syntaxe incorrecte près de '1'. 

Est-ce même possible avec un IF EXIST?

Cordialement,

Michael

17
Michael

Si vous voulez le faire de cette façon, c'est la syntaxe que vous recherchez;

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

Vous n'avez pas strictement besoin des instructions BEGIN..END, mais il est probablement préférable de prendre cette habitude dès le début.

39
Rich Benner

Que diriez-vous d'utiliser IIF?

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

De même, si vous utilisez EXISTS pour vérifier l'existence de lignes, n'utilisez pas *, utilisez simplement 1. Je pense que le coût est moindre.

6
AntDC

Quelle est la sortie dont vous avez besoin, select ou print ou .. etc.

utilisez donc le code suivant:

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

Vous pouvez définir une variable @Result pour y saisir vos données. 

DECLARE @Result AS INT

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

En SQL sans SELECT, vous ne pouvez rien obtenir. Au lieu du bloc IF-ELSE, je préfère utiliser l'instruction CASE pour cette 

SELECT CASE
         WHEN EXISTS (SELECT 1
                      FROM   tblGLUserAccess
                      WHERE  GLUserName = 'xxxxxxxx') THEN 1
         ELSE 2
       END 
2
Pரதீப்