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;

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PL/SQL是一种面向对象的编程语言,主要用于Oracle数据库管理系统中的存储过程、触发器、函数等对象的开发和管理。下面是PL/SQL入门教程的一些基本内容: 1. PL/SQL基础语法: PL/SQL程序是由一个或多个块(block)组成的。块由关键字BEGIN和END包围,可以包含变量、常量、条件语句、循环语句、异常处理等内容。例如: ``` DECLARE v_name VARCHAR2(20) := 'John'; BEGIN IF v_name = 'John' THEN DBMS_OUTPUT.PUT_LINE('Hello, John!'); ELSE DBMS_OUTPUT.PUT_LINE('Hello, ' || v_name || '!'); END IF; END; ``` 2. 变量和常量的定义和使用: 在PL/SQL中,使用关键字DECLARE来定义变量和常量,可以定义不同类型的变量和常量。例如: ``` DECLARE v_name VARCHAR2(20) := 'John'; v_age NUMBER := 30; c_pi CONSTANT NUMBER := 3.14; BEGIN DBMS_OUTPUT.PUT_LINE('Name: ' || v_name); DBMS_OUTPUT.PUT_LINE('Age: ' || v_age); DBMS_OUTPUT.PUT_LINE('PI: ' || c_pi); END; ``` 3. 条件语句和循环语句: 在PL/SQL中,可以使用IF、CASE、LOOP等关键字来进行条件判断和循环操作。例如: ``` DECLARE v_score NUMBER := 80; BEGIN IF v_score >= 90 THEN DBMS_OUTPUT.PUT_LINE('A'); ELSIF v_score >= 80 THEN DBMS_OUTPUT.PUT_LINE('B'); ELSE DBMS_OUTPUT.PUT_LINE('C'); END IF; FOR i IN 1..5 LOOP DBMS_OUTPUT.PUT_LINE(i); END LOOP; END; ``` 4. 异常处理: 在PL/SQL中,可以使用EXCEPTION关键字来处理异常。可以使用RAISE或RAISE_APPLICATION_ERROR函数来抛出异常,也可以使用WHEN OTHERS THEN来捕获其他未处理的异常。例如: ``` DECLARE v_num1 NUMBER := 10; v_num2 NUMBER := 0; v_result NUMBER; BEGIN BEGIN v_result := v_num1 / v_num2; EXCEPTION WHEN ZERO_DIVIDE THEN DBMS_OUTPUT.PUT_LINE('Divided by zero!'); END; END; ``` 以上是PL/SQL入门教程的一些基本内容,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值