IF条件控制语句
IF语句用于构造基本的条件语句,条件控制语句赋予了代码能够根据条件改变执行流程的能力。
语法格式
sql
IF bool_expr THEN
pl_stmt_list
[ELSIF bool_expr THEN
pl_stmt_list
[ELSIF bool_expr THEN
pl_stmt_list
...]]
[ELSE
pl_stmt_list]
{END IF | ENDIF | END IF name_space} ;
参数说明
bool_expr
:布尔表达式,如果该表达式的值为真,则执行THEN后面的pl_stmt_list。若有ELSE IF则依次进行条件判断,若均未匹配成功则执行ELSE分支pl_stmt_list或退出该条件构造逻辑。pl_stmt_list
:一个或多个过程性SQL语句的列表,可以为变量赋值语句、IF条件控制语句、循环控制语句、嵌套定义、SQL执行语句等语句。ELSIF
:ELSIF关键字用于添加额外的条件判断。可以有多个ELSIF子句。ELSE
:ELSE关键字用于指定当所有 IF 和 ELSIF 条件都不满足时执行的语句。namespace
:带命名空间的结束IF语句,用于标识具体的IF语句,通常用于嵌套的IF语句中。
示例
块语句中使用IF
块语句中分别定义3个常数变量a
、b
、c
,并对其赋值,若判断a既大于b又大于c,则输出消息a is bigger than b and c
,否则输出b值。
sql
DECLARE
a INTEGER;
b INTEGER;
c INTEGER;
BEGIN
a := 40;
b := 20;
c := 30;
IF a > b AND a > c THEN
SEND_MSG('a is bigger than b and c');
ELSE
SEND_MSG(b);
END IF;
END;
/
-- 输出
a is bigger than b and c
说明:
在Console控制台执行时,匿名语句块最后需要添加/标识结束,在其他管理工具执行时无需添加/。
存储过程中使用IF
在存储过程中声明一个整数类型变量id_1
,并在逻辑判断(IF语句)中使用这个变量与字符类型的值'1'
和''
进行比较。
sql
-- 创建一个表test_pro
CREATE TABLE test_pro(id INT, title VARCHAR, remark VARCHAR);
-- 创建一个块语句进行判断并执行插入操作
DECLARE
id_1 int;
BEGIN
id_1 := 1;
IF id_1 = '1' OR id_1 = '' THEN
INSERT INTO test_pro VALUES(-id_1, '-1', 'test');
END IF;
END;
/
-- 查询结果确认结果是否正确插入
SELECT * FROM test_pro;
ID | TITLE | REMARK |
------------------------------------------------------------------------------
-1 | -1| test|