存储过程:判断太多,如何处理

nosuchtracter 2007-11-01 03:06:28
一个查询的条件判断太多,有没有啥好拌饭。我现在是这样
if(a)
begin
if(a1)
begin
if(a11)
begin
if(a111)
--**----
else
--***---
end
else
if(a111)
--**----
else
--***---
end
end
else
begin
if(a11)
if(a111)
--**----
else
--***---
end
else
if(a111)
--**----
else
--***---
end
end
end
else
begin
if(a1)
begin
if(a11)
begin
if(a111)
--**----
else
--***---
end
else
if(a111)
--**----
else
--***---
end
end
else
begin
if(a11)
if(a111)
--**----
else
--***---
end
else
if(a111)
--**----
else
--***---
end
end
end
晕死,我自己看得头都晕了,各位大大一般是怎么写的?
本来想用declare @sql nvarchar(1000)
set @sql='....'
exec(@sql)
这样来实现的,但里面有return直接执行SQL语句不行
用exec 存储过程名 参数 这样写又要改存储过程参数,代码也要改,麻烦
请教
...全文
119 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
WNASP 2007-11-02
  • 打赏
  • 举报
回复
我绝的楼主讲的不是很清楚,你这些判断主要是来判断什么的
那些a1,a11都是些什么参数
这些判断和你的那个set @sql= '.... ' 有什么关系

这些都没讲清楚,注意以后问问题要站在读者的角度去考虑问题,因为你是最明白环境的人,但没有让别人明白
wuxing2006 2007-11-02
  • 打赏
  • 举报
回复
关键是看你要做什么,你的代码肯定有待优化
消瘦的锁骨浩 2007-11-02
  • 打赏
  • 举报
回复
为什么要用这么多判断,非得在数据库内实现吗?
在后台代码中判断好了,什么情况调什么存储过程不行吗?
把这些业务逻辑都写到数据库内,效率低.
bwangel 2007-11-02
  • 打赏
  • 举报
回复
where子句里不能用case???
wanabe 2007-11-01
  • 打赏
  • 举报
回复

试了case了吗
nosuchtracter 2007-11-01
  • 打赏
  • 举报
回复
没人顶?
nosuchtracter 2007-11-01
  • 打赏
  • 举报
回复
case 函数不能嵌套在where 子句中吧?
select * from table where (case ....end)
这样应该行不通的
  • 打赏
  • 举报
回复
晕是case
Case具有两种格式。简单Case函数和Case搜索函数。
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END


这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。
还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
nosuchtracter 2007-11-01
  • 打赏
  • 举报
回复
晕,这是啥编辑器哦。格式都没了
用switch也不行啊
因为都是组合的
if(a)
if(a11)
if(a111)
if(a1111)
.........
else
........
else
if(a1111)
.........
else
........
else
if(a111)
if(a1111)
.........
else
........
else
if(a1111)
.........
else
........
else
  • 打赏
  • 举报
回复
switch用不上吗

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧