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
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.
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.
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
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
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