標號和goto&null語句

標號和GOTO 

PL/SQL中GOTO語句是無條件跳轉到指定的標號去的意思。語法以下:spa

 

GOTO label;
......
<<label>> /*標號是用<< >>括起來的標識符 */

 

 

注意,在如下地方使用是不合法的,編譯時會出錯誤。code

u 跳轉到非執行語句前面。blog

u 跳轉到子塊中。編譯

u 跳轉到循環語句中。class

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;
相關文章
相關標籤/搜索