pl/sql中goto語句是無條件跳轉到指定的標號去的意思。語法如下:
goto label;
......
<> /*標號是用<< >>括起來的識別符號 */
注意,在以下地方使用是不合法的,編譯時會出錯誤。
u 跳轉到非執行語句前面。
u 跳轉到子塊中。
u 跳轉到迴圈語句中。
u 跳轉到條件語句中。
u 從異常處理部分跳轉到執行。
u 從條件語句的一部分跳轉到另一部分。
例12:
1declare
2 v_counter number := 1;
3begin
4loop
5 dbms_output.put_line('v_counter的當前值為:'||v_counter);
6 v_counter := v_counter + 1;
7 if v_counter > 10then
8goto labeloffloop;
9end if;
10end loop;
11<>
12 dbms_output.put_line('v_counter的當前值為:'||v_counter);
13 end;
例13:
declarev_i number := 0;
v_s number := 0;
begin
<>v_i := v_i + 1;
if v_i
<= 1000then
v_s := v_s +v_i;
goto label_1;
end if;
dbms_output.put_line(v_s);
end;
在pl/sql 程式中,null語句是乙個可執行語句,可以用 null 語句來說明「不用做任何事情」的意思,相當於乙個佔位符或不執行任何操作的空語句,可以使某些語句變得有意義,提高程式的可讀性,保證其他語句結構的完整性和正確性。如:
例14:
1declare
2...
3begin
4...
5if v_num is null then
6goto labelprint;
7end if;8…
9<>
10 null; --不需要處理任何資料。
11 end;
例15:
1declare
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);
6begin
7 v_emp_id := &emp_id;
8select first_name, salary into v_first_name, v_salary
9 from employees where employee_id =v_emp_id;
10 if v_salary <= 3000then
11 v_sal_raise := .10;
12 dbms_output.put_line(v_first_name||'的工資是'||v_salary
13 ||'、工資漲幅是'||v_sal_raise);
14else
15null;
16end if;
17 end;
goto 語句和標號
goto 語句及標號可能是有害的,但未必全是無用的。影響控制流程的語句 我們知道 break 只能跳出最內層的迴圈,如果在乙個巢狀迴圈中遇到某個錯誤條件需要立即跳出最外層迴圈做錯誤處理,就可以用到 goto 語句 for for error 出錯處理 這裡的 error 叫做標號 label 任何語...
指令性語句和指示性語句 名字 變數 標號
2.變數 3.指令性語句 4.標號 5.變數和標號的型別的重新定義 8086 8088 的程式最多可由為 4 段組成,並分別由段暫存器 cs ds es ss 的內容作為段基值,每段所佔記憶體容量最大可達 64kb。各段由命令 segment 開始,並由命令 ends 結束。如 資料段 data s...
使用控制結構 迴圈語句 巢狀迴圈和標號
循巢狀是指在乙個迴圈語句之中嵌入另乙個迴圈語句,而標號 label 則用於標記巢狀快活巢狀迴圈。通過在巢狀迴圈中使用標號,可以區分內層迴圈和外層迴圈,並且可以在內層迴圈中直接退出外層迴圈。在編寫pl sql塊時,可以使用 定義標號。例子 declare result int begin for i ...