plsql_迴圈結構_do while_do unitl_while loop_end loop測試(一)
do until迴圈
會一直迴圈,直到滿足exit條件就會退出迴圈
要中止迴圈,可以採用exit when語句或者exit if條件語句
當然,除0等異常可以中止迴圈
下為以上兩種語句的語法結構
用if語句退出迴圈
loop
語句
if(表示式) then exit;
end if;
end loop;
---請看真正的示例
SQL> set serveroutput on
SQL> r
1 declare
2 counter integer:=10;
3 begin
4 loop
5 dbms_output.put_line(counter);
6 counter:=counter-1;
7 if(counter=0) then exit;
8 end if;
9 end loop;
10* end;
10
9
8
7
6
5
4
3
2
1
PL/SQL procedure successfully completed.
用exit when語句退出迴圈
loop
語句
exit when
end loop;
---請看如下示例
SQL> declare
2 counter integer:=10;
3 begin
4 loop
5 dbms_output.put_line(counter);
6 counter:=counter-1;
7 exit when counter=0;
8 end loop;
9 end;
10 /
10
9
8
7
6
5
4
3
2
1
PL/SQL procedure successfully completed.
SQL>
---採用exception退出do unitl 迴圈
SQL> declare
2 counter positive:=10; ---注意這裡用的是positive而非integer
3 begin
4 loop
5 begin
6 dbms_output.put_line(counter);
7 counter:=counter-1;
8 exception when value_error then exit; --注意:語法為 exception when 異常名字 then 處理異常的動作;
9 end;
10 end loop;
11 end;
12 /
10
9
8
7
6
5
4
3
2
1
PL/SQL procedure successfully completed.
----while迴圈----
在執行迴圈之前先判斷條件,可能判斷條件後一次也進行迴圈
迴圈結構的語法
while(條件 is true) loop --注:這個條件不能為null,否則就成死迴圈了
語句
end loop;
示例如下:
SQL> r
1 declare
2 ascii_char integer:=97; ---列印小寫字母序列
3 alphabet varchar2(26);
4 begin
5 while(nvl(length(alphabet),0)<26)
6 loop
7 alphabet:=alphabet||chr(ascii_char);
8 ascii_char:=ascii_char+1;
9 end loop;
10 dbms_output.put_line(alphabet); --注意:此處把dbms_output放在loop迴圈外面,就是僅列印alphabet最後的變數值
11* end;
abcdefghijklmnopqrstuvwxyz
PL/SQL procedure successfully completed.
---說明如何值為null的varchar型別與有值的varchar拼接,最終值為有值的varchar,而非null
SQL> declare
2 x varchar2(100);
3 y varchar2(10):='sex';
4 begin
5 x:=x||y;
6 dbms_output.put_line(x);
7 end;
8 /
sex
PL/SQL procedure successfully completed.
SQL>
---for 迴圈---
語法
for c in [reverse] a..b loop
語句
end loop;
注:for loop未必會一定迴圈,如當:a>b時,就不會迴圈
a=b,僅會迴圈一次
a
--示例如下:
SQL> declare ---未執行迴圈
2 str varchar2(10);
3 x integer:=11;
4 y integer:=10;
5 begin
6 for i in x..y loop
7 str:=str||'abc';
8 end loop;
9 dbms_output.put_line(nvl(str,'never execute for loop.'));
10 end;
11 /
never execute for loop.
PL/SQL procedure successfully completed.
SQL> r ---這個就僅執行1次迴圈
1 declare
2 str varchar2(10);
3 x integer:=10;
4 y integer:=10;
5 begin
6 for i in x..y loop
7 str:=str||'abc';
8 end loop;
9 dbms_output.put_line(nvl(str,'never execute for loop.'));
10* end;
abc
PL/SQL procedure successfully completed.
---do while do結構---
程式碼先執行一些任務,然後對條件進行判斷。如果條件滿足,則執行第2個任務
具體語法結構如下:
loop
語句
if(表示式) then exit;
end if;
語句
end loop;
loop
語句
exit when
語句
end loop;
具體示例如下:
SQL> declare
2 cursor c1 is select dname from test;
3 cursor_record c1%rowtype;
4 begin
5 open c1;
6 loop
7 fetch c1 into cursor_record;
8 exit when c1%notfound;
9 dbms_output.put_line(cursor_record.dname);
10 end loop;
11 end;
12 /
ACCOUNTING
RESEARCH
SALES
OPERATIONS
it2
it
PL/SQL procedure successfully completed.
SQL> r
1 declare
2 cursor c1 is select dname from test;
3 cursor_record c1%rowtype;
4 begin
5 open c1;
6 loop
7 fetch c1 into cursor_record;
8 if(c1%notfound) then exit;
9 end if;
10 dbms_output.put_line(cursor_record.dname);
11 end loop;
12* end;
ACCOUNTING
RESEARCH
SALES
OPERATIONS
it2
it
PL/SQL procedure successfully completed.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-671199/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C語言——迴圈結構(for迴圈,while迴圈,do-while迴圈)C語言While
- Java迴圈結構-for,while及do…whileJavaWhile
- Java 迴圈結構 - for, while 及 do...whileJavaWhile
- while迴圈以及do while迴圈While
- 事件迴圈(event loop)事件OOP
- while迴圈和do迴圈、緩衝區、一維陣列While陣列
- 迴圈結構for
- 迴圈結構
- Python 為什麼不設計 do-while 迴圈結構?PythonWhile
- RationalDMIS 7.1 do迴圈示例
- JS事件迴圈Event LoopJS事件OOP
- Javascript 事件迴圈event loopJavaScript事件OOP
- JavaScript事件迴圈(Event Loop)JavaScript事件OOP
- JS 事件迴圈(Event Loop)JS事件OOP
- 05迴圈結構
- py迴圈結構
- loop迴圈 長時間沒有返回結果OOP
- Java 迴圈 - for, while 及 do…whileJavaWhile
- 一文梳理JavaScript 事件迴圈(Event Loop)JavaScript事件OOP
- 事件迴圈(Event Loop)淺析事件OOP
- pl/sql for loop迴圈的使用SQLOOP
- lisp 裡的迴圈loop macroLispOOPMac
- 0165-loop 迴圈OOP
- oracle plsql儲存過程_while loop_end loop_exitOracleSQL儲存過程WhileOOP
- 筆試題——JavaScript事件迴圈機制(event loop、macrotask、microtask)筆試JavaScript事件OOPMac
- 一個簡易的渲染迴圈結構
- python分支結構與迴圈結構Python
- 瀏覽器事件迴圈Event Loop瀏覽器事件OOP
- Python迴圈結構用法Python
- php分支和迴圈結構PHP
- 6、迴圈結構語句
- 迴圈結構程式設計程式設計
- 實驗5 迴圈結構程式設計(while、do-while語句的應用)程式設計While
- 實驗5迴圈結構程式設計(while、do-while語句的應用)程式設計While
- Java while和do while迴圈詳解JavaWhile
- Flutter Flame 教程2 -- Game Loop遊戲迴圈FlutterGAMOOP遊戲
- JavaScript的事件迴圈(Event loop)(附圖)JavaScript事件OOP
- 淺談js的事件迴圈(Event Loop)JS事件OOP