Skip to content

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个常数变量abc,并对其赋值,若判断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|