• 标号和goto&null语句


    标号和GOTO 

    PL/SQL中GOTO语句是无条件跳转到指定的标号去的意思。语法如下:

    GOTO label;
    ......
    <<label>> /*标号是用<< >>括起来的标识符 */

    注意,在以下地方使用是不合法的,编译时会出错误。

    u 跳转到非执行语句前面。

    u 跳转到子块中。

    u 跳转到循环语句中。

    u 跳转到条件语句中。

    u 从异常处理部分跳转到执行。

    u 从条件语句的一部分跳转到另一部分。

    例12:

     1 DECLARE
     2    V_counter NUMBER := 1;
     3 BEGIN
     4    LOOP 
     5      DBMS_OUTPUT.PUT_LINE('V_counter的当前值为:'||V_counter);
     6      V_counter := v_counter + 1;
     7    IF v_counter > 10 THEN
     8        GOTO labelOffLOOP;
     9    END IF;
    10    END LOOP;
    11    <<labelOffLOOP>>
    12      DBMS_OUTPUT.PUT_LINE('V_counter的当前值为:'||V_counter);
    13 END;

    例13:

    DECLARE
       v_i NUMBER := 0;
       v_s NUMBER := 0;
    BEGIN
       <<label_1>>
       v_i := v_i + 1;
       IF v_i <= 1000 THEN
          v_s := v_s + v_i;
          GOTO label_1;
       END IF;
       DBMS_OUTPUT.PUT_LINE(v_s);
    END;

     NULL 语句 

    在PL/SQL 程序中,NULL语句是一个可执行语句,可以用 null 语句来说明“不用做任何事情”的意思,相当于一个占位符或不执行任何操作的空语句,可以使某些语句变得有意义,提高程序的可读性,保证其他语句结构的完整性和正确性。如:

    例14:

     1 DECLARE
     2     ...
     3 BEGIN
     4     ...
     5     IF v_num IS NULL THEN
     6     GOTO labelPrint;
     7     END IF;
     8  9   <<labelPrint>>
    10   NULL; --不需要处理任何数据。
    11 END;

    例15:

     1 DECLARE
     2    v_emp_id employees.employee_id%TYPE;
     3    v_first_name employees.first_name%TYPE;
     4    v_salary employees.salary%TYPE;
     5    v_sal_raise NUMBER(3,2);
     6 BEGIN
     7    v_emp_id := &emp_id;
     8    SELECT first_name, salary INTO v_first_name, v_salary
     9    FROM employees WHERE employee_id = v_emp_id;
    10    IF v_salary <= 3000 THEN
    11       v_sal_raise := .10;
    12       DBMS_OUTPUT.PUT_LINE(v_first_name||'的工资是'||v_salary
    13                                        ||'、工资涨幅是'||v_sal_raise);
    14    ELSE
    15       NULL;
    16    END IF;
    17 END;
  • 相关阅读:
    Reddit 转载 Drunk Post: Things I've learned as a Sr Engineer
    算法28 30 二叉树非递归遍历(前中后)
    C++ 子类构造函数初始化列表与基类关系
    算法31 leetcode102 二叉树的层序遍历
    C++由数组构建二叉树指针
    windows下编译源代码安装软件
    算法27 leetcode101 对称二叉树
    算法31 88. 合并两个有序数组
    c++:const修饰指针
    c++ 正则实现 千分位分割
  • 原文地址:https://www.cnblogs.com/anzhi/p/7568381.html
Copyright © 2020-2023  润新知