Je souhaite utiliser CASE
dans ma procédure stockée. Je reçois une erreur de syntaxe dans mon code:
select
case @Temp
when 1 then (@selectoneCount=@selectoneCount+1)
when 2 then (@selectoneCount=@selectoneCount+1)
end
En courant, je reçois:
syntaxe incorrecte près de '='.
à cette ligne ici:
@selectoneCount = @selectoneCount + 1
près de l'égal.
En fait, je reçois la valeur de retour d'un autre sp dans @temp, puis si @temp = 1, je veux incrémenter le nombre de @SelectoneCount de 1, etc. Veuillez me faire savoir quelle est la syntaxe correcte.
Le CASE
est juste un "commutateur" pour retourner une valeur - pour ne pas exécuter un bloc de code entier.
Vous devez changer votre code en quelque chose comme ceci:
SELECT
@selectoneCount = CASE @Temp
WHEN 1 THEN @selectoneCount + 1
WHEN 2 THEN @selectoneCount + 1
END
Si @temp
n'est défini sur aucune de ces valeurs (1 ou 2), vous obtiendrez alors un NULL
Ceci est une instruction select, donc chaque branche du cas doit retourner quelque chose. Si vous souhaitez effectuer des actions, utilisez simplement un if.
select
@selectoneCount = case @Temp
when 1 then (@selectoneCount+1)
when 2 then (@selectoneCount+1)
end
select @selectoneCount
En fait, j'obtiens la valeur de retour d'un autre sp dans @temp puis @temp = 1, puis je veux augmenter le nombre de @SelectoneCount de 1 et ainsi de suite. Veuillez me faire savoir quelle est la syntaxe correcte.
Quel est le problème avec:
IF @Temp = 1 --Or @Temp = 2 also?
BEGIN
SET @SelectoneCount = @SelectoneCount + 1
END
(Bien que cela puisse être un code procédural - ce n'est généralement pas la meilleure façon d'utiliser SQL)