SQL Server 2000 « syntaxe incorrecte près du mot-clé « CASE » »
-
12-09-2019 - |
Question
L'erreur est de retour lorsque la procédure stockée suivant est tenté d'exécuter:
EXECUTE p_someProc
--list of vars
CASE WHEN @var1=1 AND @var2=1 THEN 3
WHEN @var2=1 THEN 2
WHEN @var1=1 THEN 1 END,
--more vars
Il existe d'autres fonctions CASE incluses, mais une seule erreur est vomie up qui pointe vers le premier cas.
Lorsque l'expression identique est exécutée dans une fonction d'impression, un résultat attendu est retourné.
declare @var1 bit set @var1 = 1
declare @var2 bit set @var2 = 1
print(CASE WHEN @var1=1 AND @var2=1 THEN 3
WHEN @var1=1 THEN 2
WHEN @var2=1 THEN 1 END)
La sortie est '3'
Je suppose que je suis abusant de la fonction CASE en quelque sorte. Quelqu'un pourrait-il penser à une solution ou un moyen de résoudre ce problème?
Merci d'avance.
- Stan
La solution
JeremyMcGee fait allusion ci-dessus, vous devez effectuer une mission plutôt que d'essayer de passer l'affaire à l'exécutif, essayez quelque chose comme ce qui suit
Declare @varx int
select @varx = CASE WHEN @var1=1 AND @var2=1 THEN 3
WHEN @var2=1 THEN 2
WHEN @var1=1 THEN 1 END
EXECUTE p_someProc @varx
Autres conseils
Difficile à dire sans plus de code. Vérifiez qui ont été déclarés @ var1 et var2 @, peut-être?
Assurez-vous d'attribuer le résultat de l'affaire à quelque chose, aussi!