• 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;
  • 相关阅读:
    多个有序链表的合并
    链表学习
    机器人上楼梯
    字符驱动
    第一个内核模块hello world
    装饰模式(decorator)
    使用WebRTC搭建前端视频聊天室——数据通道篇
    使用WebRTC搭建前端视频聊天室——点对点通信篇
    使用WebRTC搭建前端视频聊天室——信令篇
    使用WebRTC搭建前端视频聊天室——入门篇
  • 原文地址:https://www.cnblogs.com/jiangbei/p/8229146.html
Copyright © 2020-2023  润新知