我有一个存储过程,正在尝试对它执行条件WHERE子句。我认为该解决方案很容易,但是由于某种原因,它使我逃脱了。
我要实现的是:如果将ID(在这种情况下为@pbid)传递给存储过程,我只想返回与该参数匹配的一条记录,否则我想返回所有结果。桌子。
这是我想出的内容,显然不起作用,因为我正在尝试对PBID (PBID =)进行均等评估,并且希望有条件地进行那
where pb.PBID =
CASE WHEN @pbid is not null THEN
@pbid --just return results with this ID
ELSE
is not null --return all results
END
如果是C#或类似的代码,我会这样写:
if(intPBID > 0) --parameter set, only return results with that param
{
pb.PBID = intPBID
}
else
{
pb.PBID > 0 --return everything
}
我希望这不会造成混淆,希望您能提供任何反馈意见。
谢谢
答案 0 :(得分:2)
我不确定性能会带来什么影响,但是我通常会做类似的事情:
SELECT *
FROM table
WHERE (@pbid IS NULL OR pb.PBID = @pbid)