2017-07-24 2 views
-4

Y at-il autre façon de faire plusieurs déclarations en fonction des conditions: si (expr1) puis sélectionnez cette else if (expr2) puis sélectionnez que(T) instruction case SQL (pas d'expression)

... la cas servirait bien ce but, si elle ne se limitait pas à des expressions. J'utilise le code serveur SQL

jusqu'à présent:

if(@code=57) begin (lots of complex statements) end 
if(@code=58) begin (lots of other complex statements) end 
if(@code=59) begin (lots of other complex statements) end 
if(@code=60) begin (lots of other complex statements) end 

Je ne peux pas utiliser le cas, car il est une expression et renvoie des valeurs, il ne peut pas exécuter des instructions.

+2

CASE peut fonctionner correctement, quel est votre problème? Donnez-nous des détails spécifiques, des tableaux, des données etc. et montrez-nous ce que vous avez déjà essayé. – DavidG

+1

Je pense que vous devez utiliser UNION, pas de cas. – Steven

+1

Étant donné la description jusqu'à présent, comment pouvez-vous même dire qu'une union peut être la solution? –

Répondre

0

IF est une instruction procédurale, c'est-à-dire qu'elle dirige le flux d'instructions dans un lot ou une procédure à plusieurs instructions. CASE ne peut pas faire cela. Bien que cela puisse ressembler à une déclaration procédurale, CASE est en fait une fonction; il renvoie des valeurs différentes en fonction de l'entrée. CASE ne redirige pas le contrôle du flux de programme. CASE peut invoquer des sous-requêtes; cela pourrait être imprudent du point de vue de la performance, mais même à ce moment-là, les sous-requêtes ne pouvaient renvoyer qu'une seule valeur.