Transact-SQL, 在select语句的where子句中,能否根据参数改变条件子句?(100分)

  • 主题发起人 主题发起人 sdr
  • 开始时间 开始时间
S

sdr

Unregistered / Unconfirmed
GUEST, unregistred user!
Transact-SQL, 在select语句的where子句中,能否根据参数改变条件子句?
例如,在写存储过程或者用户自定义函数中能否根据参数的值选择添加条件子句
如果@UserId > 0,则在条件子句中增加and UserId = @UserId否则查询时没有此条件子句而返回所有行
 
1.用exec来执行动态SQL,但这样做就没有存储过程的优势了
2.用case函数
where case when @userid>0 then
userid=@userid else
1=1 end
 
if @param=1 then
begin
条件一
end
else

条件二,
这样可以吧。不过你如让程序自己选择,应该也可以。
 
where ((@userid>0) and (UserId = @UserId)) or (@userid<=0)
 
可以参考一下这个sp_executesql的帮助
 
觉得还是先组织再执行再是正解!
 
超级牛X的答案最为简单
 
后退
顶部