如何在存储过程中编写if条件的情况

时间:2009-11-20 17:13:10

标签: sql stored-procedures

我有一张桌子,我正在通过5个参数

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

从前端[来自文本框控件的页面]如果他们没有向存储过程发送任何值,那么我应该做一个简单的查询 条件1:

 select  * From image

条件2: 如果他们向上述参数发送任何值  然后根据参数发送

收集这些值并检索结果

条件3:  在这里,他们可能会将值发送到任何参数  在该条件中选择该参数的值。对于他们没有发送值的参数,我们可以发送'null'或''

所以基于那个反复的结果

那么如何为这样的条件写一个存储过程。处理所有三个条件

任何帮助真的很棒   谢谢

2 个答案:

答案 0 :(得分:5)

尝试以下几点:

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)

答案 1 :(得分:0)

您还可以使用IsNull(特定于transact-SQL)或Coalesce(SQL-92标准)函数,如:

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