【Oracle】IF语句
IF语句可以有3种使用方法,如下表:
IF类型 | 特点 |
---|---|
IF THEN END IF; |
这是if最简单的语法。IF与WHEN之间的条件决定了在WHEN和END IF之间一系列语法是否会被执行。如果条件部分的求值结果是FALSE或者NULL,这些代码就不会被执行。 |
IF THEN ELSE END IF; |
这种组合形式的逻辑实现了二选一的逻辑。根据对位于IF和THEN两个关键字之间的条件的求值结果,要么THEN和ELSE之间的代码被执行,要么ELSE和END IF之间的代码被执行。总之,这两部分代码肯定是有一个会被执行。 |
IF THEN LESIF ELSE END IF; |
这是IF语句最后一个也是最复杂的使用形式。IF语句会从一系列互斥条件中选择一个TRUE的,然后执行该条件关联语句。 |
1.IF语句语法
1.1 IF-THEN组合
IF-THEN语法的常见格式如下:
IF condition
THEN
...执行的语句...
END IF;
其中,condition
是一个布尔类型的变量、常量,其值可能存在三种情况:TRUE,FALSE,NULL
三值逻辑
例如存在这样的条件
IF sal > 1000; dbms_output.put_line('null');END IF;
,这个条件可能返回TRUE
,FALSE
,但是当sal
的值是NULL
的时候,也就是:IF NULL > 1000
,返回的值就是NULL
上述情况为了避免NULL
值产生,我们可以使用IF sal > 1000 OR sal is null; dbms_output.put_line('null');END IF;
来避免,也可以使用空值处理函数处理
1.2 IF-THEN-ELSE组合
语法格式如下:
IF condition
THEN
... TRUE sequence of executeable statements ...
ELSE
... FALSE/NULL sequence of executeable statements ...
END IF;
1.3 IF-THEN-ELSIF组合
要特别注意:此处是ELSIF不是ELSEIF,写成ELSE IF也是不行的。
语法格式如下:
IF condition-1
THEN
statements-1
ELSIF condition-N
THEN
statements-N
[ELSE
else-statements]
END IF;
2.短路求值
PL/SQL使用短路求值方法,也就是说PL/SQL不需要对一个IF语句中的所有表达式都去求值。比如,当对下面这个IF语句中的表达式求值的时候,如果第一个条件是FALSE或者NULL,则PL/SQL会停止对表达式继续求值,立即跳转到ELSE分支上;
IF condition1 AND condition2
THEN
...
ELSE
...
END IF;
根据短路求值原理,存在多个条件时,一定要将会消耗大量的CPU和内存资源的条件放到整个条件集的最后。
作者:奔跑的金鱼
声明:书写博客不易,转载请注明出处,请支持原创,侵权将追究法律责任
个性签名:人的一切的痛苦,本质上都是对自己无能的愤怒
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!