PL/SQL中GOTO語句是無條件跳轉到指定的標號去的意思。語法以下:spa
注意,在如下地方使用是不合法的,編譯時會出錯誤。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;
在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;