您好,有个sql存储过程的语句的疑惑一直找不到答案,就是存储过程能用多个if语句吗? 比如:

if @参数='xxx'
if @参数='xxx'
if @参数='xxx'
没有一个else层这样写过,似乎能执行,但很多人都说,不能这样写,我很疑惑,因为存储过程只要满足一个条件就行了,
另外如果这样写没问题,理论上应该与
if
else if
else if
else
的性能是一样的,都是依次向下执行的,因为多个if不用考虑结尾的else语句
谢谢!

个人觉得:从执行结果上考虑,只要是参数的值唯一,肯定只输入唯一值。从执行效率上来说,如果某个参数条件成立执行了,但是如果用if else 后面的语句将不执行,而这样的话,后面的语句还在执行。追问

执行结果肯定相同,因为传入的参数肯定只会满足一个条件
提问1:像我这样写多个if语句肯定是没问题吧,抛开性能
提问2:您的意思是满足第一条if,然后执行结束,像我这样写还会继续执行下一条if吗?虽然条件肯定不满足,

我现在最大的疑问点就是,我这样写是不是没问题(抛开性能),因为我不想写个多余的else,第二个疑点就是,满足一个条件后,肯定会执行,那么执行完后还会继续执行下面的if吗?虽然肯定是条件不成立

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-17
性能不一样
你考虑的是不成功的情况,如果成功了呢。
if @参数='xxx'
if @参数='xxx'
if @参数='xxx'
全部执行
if --如果成功了,以下就不需要执行了
else if
else if
end
第2个回答  2012-02-17
执行的性质就不同,IF.IF.IF判断正确就执行不正确接着下一个IF语句,IF..ELSE IF..一个IF条件符合其他情况ELSE IF就不会执行,所以用法应该与实际情况相关联。判断单一个参数值的话个人感觉还是IF ELSE比较严谨追问

现在的疑问点我对上面的回答追问,
就是,满足了第一个if然后执行,执行结束后还会继续执行下一条if语句吗?我想知道这个答案,最好能有个准确的答复或者给个简单的测试代码能告诉我肯定能执行
我自己想了一个测试代码,没有测试还
if 1=1
语句
if 2=2
语句
等回头在数据库里测试一下,因为我没有测试,所以继续追问您的回答,谢谢

第3个回答  2012-02-17
赞同上面几位说法
写程序,语法通过是一方面,效率更重要。
第4个回答  2012-02-17
用if和if else多个,可以考虑case when ... then .... end case