oracle存儲過程中的循環語句有哪些

oracle存儲過程中的循環語句:1、LOOP循環,語法為“loop 循環體;EXIT WHEN 結束循環條件表達式;END LOOP;”;2、WHILE循環,語法為“while 條件表達式 loop 循環語句;end loop;”;3、for循環,語法為“for 變量 IN (reverse) 計數器下限值…計數器上限值 LOOP 循環體;END LOOP;”。

oracle存儲過程中的循環語句有哪些

本教程操作環境:windows10系統、Oracle 12c版、Dell G3電腦。

oracle存儲過程中的循環語句有哪些

當程序需要反復執行某一操作時,就必須使用循環結構。PL/SQL 中的循環語句主要包括LOOP語句、WHERE語句和FOR語句3種。

LOOP語句

LOOP語句會先執行一次循環體,然后再判斷EXIT WHEN關鍵字后面的條件表達式是ture還是false,為true的時候退出循環體,否則程序將再次執行循環體。

基本語法:

loop ????A; ????EXIT?WHEN?B; END?LOOP;

A: 代表循環體中的sql語句,可以是一句也可能是多句,這是循環體核心部分,這些語句至少被執行一遍。

B: 循環結束條件表達式,為ture時,退出循環,否則再次執行循環體。

代碼示例:

--?Created?on?2020/12/16?by?GUO? declare? ??i?int:=?0; begin ??loop ????i:=i+1; ????dbms_output.put_line(i); ????EXIT?WHEN?i?>?3; ??END?LOOP; end;

運行結果:

oracle存儲過程中的循環語句有哪些

實戰示例:

使用Loop+游標的時候,取游標當中的值,必須重新賦值一遍,要不然會報錯。

--?Created?on?2020/12/17?by?GUO? declare ??cursor?user?is ????select?*?from?user_table; ??user1?user_table%rowtype; begin ??open?user; ??loop ????fetch?user?into?user1; ????exit?when?user%notfound; ????dbms_output.put_line('用戶名稱:'?||?user1.USER_NAME); ????dbms_output.put_line('用戶年齡:'?||?user1.USER_AGE); ??end?loop; ??close?user;?--關閉游標 end;

WHILE語句

在執行之前,首先要判斷條件表達式的值是否為true,true則執行循環體,否則退出WHILE循環,繼續執行循環后面的代碼。

基本語法:

while?a?loop ??b; end?loop;

A: 表示一個條件表達式,當值為true時,程序執行循環體,否則退出。

B: 循環體內的sql語句。

代碼示例:

--?Created?on?2020/12/17?by?GUO? declare ??i?int?:=?0; begin ??while?i?<p>運行結果:</p><p><img src="https://img.php.cn/upload/image/136/559/998/1654847351764084.png" title="1654847351764084.png" alt="21.png"></p><p>實戰示例:</p><pre class="brush:sql;toolbar:false">--?Created?on?2020/12/17?by?GUO? declare ??cursor?user?is ????select?*?from?user_table; ??user1?user_table%rowtype; begin ??open?user; ??fetch?user?into?user1; ??while(user%found)loop ??dbms_output.put_line('用戶名稱:'?||?user1.USER_NAME); ??fetch?user?into?user1; ??end?loop; end;

FOR語句

FOR語句是一個可提前設置循環次數的循環控制語句,它有一個循環計數器,通常是一個整型變量,通過這個計數器來控制循環次數。

基本語法:

for?A?IN?(reverse)?B...C?LOOP ???D; ?END?LOOP;

A: 表示一個變量,通常為證書類型,用來作為計數器,默認值是遞增的,當循環當中使用reverse關鍵字時,就會循環遞減。

B: 計數器下限值,當計數器的值小于下限值的時候,終止循環。

C: 計數器上限值,當計數器的值大于上限值的時候,終止循環。

D: 循環體。

代碼示例:

--?Created?on?2020/12/17?by?GUO? declare? ??i?int?:=?0; begin ??for?i?IN?reverse?1..5?LOOP ????dbms_output.put_line(i); ??END?LOOP; end;

運行結果:

oracle存儲過程中的循環語句有哪些

實戰示例:

配合游標使用

--?Created?on?2020/12/17?by?GUO? declare ??cursor?user?is ????select?*?from?user_table; begin ??for?user1?in?user?loop ??dbms_output.put_line('用戶名稱:'||user1.USER_NAME); ??dbms_output.put_line('用戶年齡:'||user1.USER_AGE); ??end?loop; end;

推薦教程:《Oracle視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享