oracle 迴圈語句總結(break&continue)
主要有以下五種迴圈:Exit When、Loop、While、For(普通迴圈)、For(遊標迴圈),下面舉例一一說明(均為儲存過程)。
1、Exit When迴圈:
- createorreplaceprocedure proc_test_exit_when is
- i number;
- begin
- i:=0;
- LOOP
- Exit When(i>5);
- Dbms_Output.put_line(i);
- i:=i+1;
- END LOOP;
- end proc_test_exit_when;
create or replace procedure proc_test_exit_when is i number; begin i:=0; LOOP Exit When(i>5); Dbms_Output.put_line(i); i:=i+1; END LOOP; end proc_test_exit_when;
2、Loop迴圈:
原始碼複製列印關於- createorreplaceprocedure proc_test_loop is
- i number;
- begin
- i:=0;
- loop
- i:=i+1;
- dbms_output.put_line(i);
- if i>5 then
- exit;
- end if;
- end loop;
- end proc_test_loop;
create or replace procedure proc_test_loop is i number; begin i:=0; loop i:=i+1; dbms_output.put_line(i); if i>5 then exit; end if; end loop; end proc_test_loop;
3、While迴圈:
原始碼複製列印關於- createorreplaceprocedure proc_test_while is
- i number;
- begin
- i:=0;
- while i<5 loop
- i:=i+1;
- dbms_output.put_line(i);
- end loop;
- end proc_test_while;
create or replace procedure proc_test_while is i number; begin i:=0; while i<5 loop i:=i+1; dbms_output.put_line(i); end loop; end proc_test_while;
4、For普通迴圈:
原始碼複製列印關於- createorreplaceprocedure proc_test_for is
- i number;
- begin
- i:=0;
- for i in 1..5 loop
- dbms_output.put_line(i);
- end loop;
- end proc_test_for;
create or replace procedure proc_test_for is
i number;
begin
i:=0;
for i in 1..5 loop
dbms_output.put_line(i);
end loop;
end proc_test_for;
5、For遊標迴圈:
原始碼複製列印關於- createorreplaceprocedure proc_test_cursor is
- userRow test%rowtype;
- cursor userRows is
- select * from test;
- begin
- for userRow in userRows loop
- dbms_output.put_line(userRow.id||','||userRow.Name||','||userRows%rowcount);
- end loop;
- end proc_test_cursor;
create or replace procedure proc_test_cursor is
userRow test%rowtype;
cursor userRows is
select * from test;
begin
for userRow in userRows loop
dbms_output.put_line(userRow.id||','||userRow.Name||','||userRows%rowcount);
end loop;
end proc_test_cursor;
上面所示為儲存過程相應程式碼,你可以通過如下方式進行測試:
進入pl/sql, 執行 檔案->新建->程式視窗->空白,拷貝以上各段程式碼,到pl/sql空白視窗中,安F8執行編譯。
再 執行 檔案->新建->命令視窗 進入命令視窗 執行一下 set serveroutput on 這句程式碼,然後,輸入exec 相應儲存過程,ok。
第5中迴圈 要求新建一個名為test的表 欄位 id、name,插入幾條資料,進行測試即可。
========
不能。無break和continue的語法。
break可用exit代替。
loop
...
exit when ...;
...
end loop;
continue和用自定義異常代替。
loop
begin
...
raise my_ex;
...
exception
when others then null;
end;
end loop;
exit when是跳出整個迴圈,不是跳出本輪迴圈。相當於C的break。
BEGIN
<<OUTER>>
FOR I IN 1 .. 10 LOOP
<<INNER>>
FOR J IN 1..20 LOOP
DBMS_OUTPUT.PUT_LINE('J IS :'|| J);
EXIT WHEN J = 10;
END LOOP INNER;
DBMS_OUTPUT.PUT_LINE('I IS:'||I);
EXIT WHEN I = 5;
END LOOP OUTER;
END;