PL/SQL轻量版(二)——基本语法

一、流程控制

  1.条件判断

  语法:

IF <布尔表达式> THEN
  PL/SQL 和 SQL语句
END IF;
IF <布尔表达式> THEN
  PL/SQL 和 SQL语句
ELSE
  其它语句
END IF;
IF <布尔表达式> THEN
  PL/SQL 和 SQL语句
ELSIF < 其它布尔表达式> THEN
  其它语句
ELSIF < 其它布尔表达式> THEN
  其它语句
ELSE
  其它语句
END IF;

  // 请注意ELSIF而不是ELSEIF!

  示例:

DECLARE
  V_sal employees.salary%type;
BEGIN
  SELECT salary INTO V_sal
  FROM employees
  WHERE employee_id = 100;
  IF V_sal > 10000
     THEN  dbms_output.put_line('工资大于1万');
  ELSIF V_sal > 5000
      THEN dbms_output.put_line('工资大于5千');
  ELSE
      dbms_output.put_line('工资小于5千');
  END IF;
END;

  CASE表达式:

CASE selector
WHEN expression1 THEN result1
WHEN expression2 THEN result2
WHEN expressionN THEN resultN
[ ELSE resultN+1]
END;

   2.循环

    基本循环

LOOP
  Sequence of statements;
END LOOP;

 也可以使用EXIT WHEN进行退出:

LOOP
      stmt;
      exit WHEN x > 50;
   END LOOP;

  示例:

--包含初始化条件、循环体、循环条件、迭代条件
DECLARE
  v_i NUMBER(3) := 1;
BEGIN
  LOOP
      dbms_output.put_line(v_i);
      -- v_i = v_i + 1;
      EXIT WHEN v_i >= 10;
      v_i := v_i + 1;
   END LOOP;
END;

    WHILE循环

WHILE condition LOOP
   sequence_of_statements
END LOOP;

  示例:

--包含初始化条件、循环体、循环条件、迭代条件
DECLARE
  v_i NUMBER(3) := 1;
BEGIN
      WHILE v_i <= 10 LOOP
      dbms_output.put_line(v_i);
      v_i := v_i + 1;
   END LOOP;
END;

    FOR循环

FOR 循环计数器 IN [ REVERSE ] 下限 .. 上限 LOOP
要执行的语句;
END LOOP;

  示例:

--包含初始化条件、循环体、循环条件、迭代条件
DECLARE
  
BEGIN
   FOR c IN 1..10 LOOP --c会自动++
      dbms_output.put_line(c);
   END LOOP;
END;

  3.GOTO

PL/SQL 中 GOTO 语句是无条件跳转到指定的标号去的意思。语法如下:
GOTO label;
----------------------------------------------------
<<label>> /*标号是用<< >>括起来的标识符 */

  4.空处理NULL

BEGINIF v_num IS NULL THEN
GOTO print1;
END IF;
…
<<print1>>
NULL; -- 不需要处理任何数据。
END;
原文地址:https://www.cnblogs.com/jiangbei/p/8229146.html