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

Était-ce utile?

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!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top