PL/SQL IF判断

目录

IF-THEN语句

IF-THEN-ELSE语句

嵌套IF

IF-THEN-ELSIF语句

短路评估


IF语句允许您实现条件分支逻辑。

IF语句有三种风格:

  • IF THEN END IF;
  • IF THEN ELSE END IF;
  • IF THEN ELSIF ELSE END IF;

IF-THEN语句

        IF语句的最简单形式由关键字THEN和END IF包围的语句序列的条件。仅当条件为TRUE时,才执行语句序列。如果条件为FALSE或NULL,则IF语句不执行任何操作。

IF-THEN语法的一般格式如下:

IF condition
THEN
    ... sequence of executable statements ...
END IF;

以下IF条件比较两个不同的数值,如果这两个值之一为NULL,则整个表达式返回NULL。

IF salary > 400
THEN
   raise_salary(employee_id,5);
END IF;

我们可以使用IS NULL来测试是否存在NULL:

IF salary > 400 OR salary IS NULL
THEN
   raise_salary (employee_id,5);
END IF;

IF-THEN-ELSE语句

        IF-THEN-ELSE格式在两个互斥操作之间选择。此IF或IF语句的格式如下:

IF condition
THEN
    ... TRUE sequence of executable statements ...
ELSE
    ... FALSE/NULL sequence of executable statements ...
END IF;

下面是IF-THEN-ELSE结构的一个例子。如果工资可能为NULL,您可以使用NVL功能保护自己免受此问题的影响: 

IF NVL(salary,0) <= 400
THEN
   raise_salary (employee_id, 0);
ELSE
   raise_salary (employee_id, 500);
END IF;

嵌套IF

        IF语句可以嵌套。您可以在任何其他IF语句中嵌套任何IF语句。以下IF语句显示了几层嵌套:

IF condition1 THEN
   IF condition2 THEN
      statements2
   ELSE
      IF condition3 THEN
         statements3
      ELSIF condition4 THEN
         statements4
      END IF;
   END IF;
END IF;

IF-THEN-ELSIF语句

        IF-THEN-ELSIF组合允许我们实现具有许多替代方案的逻辑。这种IF变体的一般格式是:

IF condition-1
THEN
   statements-1
ELSIF condition-N
THEN
   statements-N
[ELSE
   else_statements]
END IF;

        要在几个选项之间进行选择,请使用关键字ELSIF来检查其他条件。如果第一个条件为FALSE或NULL,则ELSIF子句测试另一个条件。最后一个ELSE子句是可选的。

DECLARE
  grade CHAR(1);
BEGIN
  grade := 'A';
 
  IF grade = 'A' THEN
    DBMS_OUTPUT.PUT_LINE('Excellent');
  ELSIF grade = 'B' THEN
    DBMS_OUTPUT.PUT_LINE('Very Good');
  ELSIF grade = 'C' THEN
    DBMS_OUTPUT.PUT_LINE('Good');
  ELSIF grade = 'D' THEN
    DBMS_OUTPUT. PUT_LINE('Fair');
  ELSIF grade = 'F' THEN
    DBMS_OUTPUT.PUT_LINE('Poor');
  ELSE
    DBMS_OUTPUT.PUT_LINE('No such grade');
  END IF;
END;
/

短路评估

        PL / SQL使用短路评估。PL / SQL不需要计算IF语句中的所有表达式。例如,在以下IF语句中计算表达式时,如果第一个操作数为FALSE或NULL,PL / SQL将停止计算并立即执行ELSE分支:

IF condition1 AND condition2
THEN
   ...
ELSE
   ...
END IF;

 如果IF语句中OR操作的第一个操作数为TRUE,PL / SQL立即执行THEN分支:

IF condition1 OR condition2
THEN
   ...
ELSE
   ...
END IF;

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值