2009-11-20 9 views
1

j'ai une table où je passe 5 paramtercomment écrire une condition if cas dans la procédure stockée

table name=" image" 
parameter 
@imageID, 
@imageName, 
@imageDirectory, 
@imageResource, 

de l'extrémité avant [de la page qui est du contrôle de zone de texte] si elles didnot envoyer des valeurs stocké procedue alors je doit faire une requête simple condition1:

select * From image 

condition 2: si elles envoient une valeur à ces paramètres ci-dessus collecter les vlaues et retrive résultat sur la base du parameted envoyé

condition 3: ici, ils peuvent envoyer des valeurs à l'un des paramètres du paramètre dans cette condition sélectionner des valeurs pour ce paramètre. pour le paramètre qu'ils ont pas envoyer des valeurs que nous pouvons envoyer « null » ou « »

donc basée sur le résultat que retrive

Comment écrire une procédure stockée pour une telle condition. traiter toutes les trois conditions

Anyhelp serait vraiment génial merci

+1

Mieux vaut lister vos colonnes explicitement plutôt que par * si. –

Répondre

5

Essayez quelque chose le long de ces lignes:

SELECT * FROM IMAGE i 
WHERE 1=1 
AND (@ImageID IS NULL OR i.ImageId = @ImageID) 
AND (@ImageName IS NULL OR i.ImageName = @ImageName) 
AND (@ImageDirectory IS NULL OR i.ImageDirectory = @ImageDirectory) 
AND (@ImageResource IS NULL OR i.ImageResource = @ImageResource) 
0

Vous pouvez également utiliser le IsNull (transact-SQL spécifique) ou Coalesce (SQL -92 standard) fonction, comme dans:

Select * From Table 
Where imageId = Coalesce(@ImageId, imageId) 
    And imageName = Coalesce(@imageName,imageName) 
    etc. 
Questions connexes