2011-10-28 4 views
0

J'ai une procédure de magasin avec de nombreuses conditions mais l'une d'entre elles dépend de la valeur de l'un de mes paramètres. En ce moment j'utilise si déclaration et requête en double, je veux améliorer mais je ne peux pas trouver d'autre manière. une idée commentrequête conditionnelle

Code MyStoreProcedure

If @paramstate = 'All' 
    Select mytable.field1, mytable.field2, mytable.field3, mytable.field4,mytable.field5 
    from mytable 
    Where mytable.field6 is null 
    and mytable.field1 is not null 
Else 
    Select mytable.field1, mytable.field2, mytable.field3, mytable.field4,mytable.field5 
    from mytable 
    Where mytable.field6 is null 
    and mytable.field1 is not null 
    and mytable.state = @paramstate 
End 

comment puis-je l'améliorer?

Répondre

1

Je pense que cela supprime la nécessité d'if/else méfiez-vous, mais que ce ne peut pas être efficace

Select mytable.field1, mytable.field2, mytable.field3, mytable.field4,mytable.field5 
    from mytable 
    Where mytable.field6 is null 
    and mytable.field1 is not null 
    and (mytable.state = @paramstate or @paramstate = 'All') 
+0

merci. ça marche maintenant !!! – user1004299