順序語句:GOTO和NULL語句
一 標號和GOTO
1 語法:
PL/SQL中GOTO語句是無條件跳轉到指定的標號去的意思。語法如下:
GOTO label;
......
<<label>> /*標號是用<< >>括起來的標識符 */
註意,在以下地方使用是不合法的,編譯時會出錯誤。
— 跳轉到非執行語句前面。
— 跳轉到子塊中。
— 跳轉到循環語句中。
— 跳轉到條件語句中。
— 從異常處理部分跳轉到執行。
— 從條件語句的一部分跳轉到另一部分。
2 例子:
DECLARE
V_counter NUMBER := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE(‘V_counter的當前值為:‘||V_counter);
V_counter := v_counter + 1;
IF v_counter > 10 THEN
GOTO labelOffLOOP;
END IF;
END LOOP;
<<labelOffLOOP>>
DBMS_OUTPUT.PUT_LINE(‘V_counter的當前值為:‘||V_counter);
END;
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;
2 NULL語句
在PL/SQL 程序中,NULL語句是一個可執行語句,可以用 null 語句來說明“不用做任何事情”的意思,相當於一個占位符或不執行任何操作的空語句,可以使某些語句變得有意義,提高程序的可讀性,保證其他語句結構的完整性和正確性。如:
DECLARE
...
BEGIN
...
IF v_num IS NULL THEN
GOTO labelPrint;
END IF;
…
<<labelPrint>>
NULL; --不需要處理任何數據。
END;
DECLARE
v_emp_id employees.employee_id%TYPE;
v_first_name employees.first_name%TYPE;
v_salary employees.salary%TYPE;
v_sal_raise NUMBER(3,2);
BEGIN
v_emp_id := &emp_id;
SELECT first_name, salary INTO v_first_name, v_salary
FROM employees WHERE employee_id = v_emp_id;
IF v_salary <= 3000 THEN
v_sal_raise := .10;
DBMS_OUTPUT.PUT_LINE(v_first_name||‘的工資是‘||v_salary
||‘、工資漲幅是‘||v_sal_raise);
ELSE
NULL;
END IF;
END;
順序語句:GOTO和NULL語句