#IF Statement
IF Statement为条件选择控制语句,包含如下三种形式:
- IF THEN
- IF THEN ELSE
- IF THEN ELSIF
# IF THEN
格式为:
IF condition THEN statements END IF;
其中,condition为能产生布尔值结果的表达式。
含义为:
判断IF语句里的condition条件:
- 如果condition的值为true,执行THEN后面的Statements,然后继续执行到END IF结束;
- 如果condition的值为false,不执行任何操作,跳转到END IF结束。
示例
DECLARE
i INT;
BEGIN
i := 0;
IF i < 5 THEN
i := i + 1;
DBMS_OUTPUT.PUT_LINE ('This is: '||i);
END IF;
END;
/
--result
This is: 1
# IF THEN ELSE
格式为:
IF condition THEN statements
ELSE statements
END IF;
其中,condition为能产生布尔值结果的表达式。
含义为:
首先判断IF语句里的condition条件:
- 如果condition的值为true,执行IF语句里THEN后面的Statements,然后跳转到END IF结束;
- 如果condition的值为false,跳转到ELSE语句,执行ELSE语句里的statements,然后继续执行到END IF结束。
示例
DECLARE
i INT;
BEGIN
i := 5;
IF i < 5 THEN
i := i + 1;
DBMS_OUTPUT.PUT_LINE ('This is: '||i);
ELSE
DBMS_OUTPUT.PUT_LINE ('This is: '|| (i-5));
END IF;
END;
/
--result
This is: 0
# IF THEN ELSIF
格式为:
IF condition_1 THEN statements_1
ELSIF condition_2 THEN statements_2
......
ELSIF condition_n THEN statements_n
[ELSE else_statements]
END IF;
其中,condition_1、condition_2 、...、condition_n 为能产生布尔值结果的表达式。
含义为:
首先判断IF语句里的condition_1条件:
- 如果condition_1的值为true,执行IF语句里THEN后面的Statements_1,然后跳转到END IF结束;
- 如果condition_1的值为false,跳转到ELSIF,执行与IF语句相同的操作;
- ......
- 如果condition_n的值为true,执行ELSIF语句里THEN后面的Statements_n,然后跳转到END IF结束;
- 如果condition_n的值为false,跳转到下一条语句:
如果下一条语句为ELSE语句,则执行else_statements,然后跳转到END IF结束。
如果下一条语句为END IF语句,则不执行任何操作结束。
示例
DECLARE
i INT;
BEGIN
i := 5;
IF i < 5 THEN
i := i + 1;
DBMS_OUTPUT.PUT_LINE ('This is: '||i);
ELSIF i>5 THEN
DBMS_OUTPUT.PUT_LINE ('This is: '|| (i-5));
ELSE
DBMS_OUTPUT.PUT_LINE ('This is: '|| (i+5));
END IF;
END;
/
--result
This is: 10