您好,有个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

您好,有个sql存储过程的语句的疑惑一直找不到答案,就是存储过程能用多个...
个人觉得:从执行结果上考虑,只要是参数的值唯一,肯定只输入唯一值。从执行效率上来说,如果某个参数条件成立执行了,但是如果用if else 后面的语句将不执行,而这样的话,后面的语句还在执行。

请教ms sqlserver存储过程如何写多个if语句?
select @user_blog_lock='yes'elseselect @user_blog_lock='no'GO这样写,后面那二条语句是没有执行到的。用到else if 是错误的语法,如果都都用if,第二条语句以后都不能执行了 变量的输入是对的。第二、三条IF语句是不能执行了。看联机丛书 F1 ---IF...ELSE在执行 Transact-SQL 语句时强...

SQL中如何使用IF语句
SQL中可以使用IF语句进行条件判断。在SQL中,IF语句常用于存储过程、函数和触发器中,用于根据条件执行不同的代码块。尽管SQL本身并不直接支持像其他编程语言中的IF语句那样的条件语句,但大多数数据库管理系统(DBMS)提供了自己的实现方式。以MySQL为例,IF语句的使用如下:sql IF expression THEN -- co...

oracle存储过程中if条件后的sql没有执行
你把你这两个 dbms输出的语句注释掉试下,你这两个语句后面都有封号,不是代表if语句已经结束了吗

怎么使用存储过程
-- Sql 里if语句 IF 条件 BEGIN 执行语句 END ELSE BEGIN ...>> 问题二:SQL存储过程如何调用存储过程? 在存储过程里用exec 执行另一存储过程名及它需要的参数就可以了 如exec抚abc '1', '2'(abc 是存储过程的名字, '1','2' 是它的参数 问题三:oracle中的存储过程,有什么作用,以及怎么...

SQl存储过程 第一一个output参数是字符串的 要如果if语句是真的就返回...
create proc dbo.NEWPROC varfield nvarchar(20) = '' output,vchProjectName nvarchar(255) ='',vchComment nvarchar(255) ='',vchLoginName nvarchar(255) ='',vchPassword nvarchar(255) =''as set nocount on begin declare @iReturn int set @iReturn=1 if @iReturn <> 0...

SQL2005的存储过程加了IF语句就无法返回记录集,不加就正常?
你的IF语句是不是用错了

相似回答
大家正在搜