oracle存儲過程中的循環語句:1、LOOP循環,語法為“loop 循環體;EXIT WHEN 結束循環條件表達式;END LOOP;”;2、WHILE循環,語法為“while 條件表達式 loop 循環語句;end loop;”;3、for循環,語法為“for 變量 IN (reverse) 計數器下限值…計數器上限值 LOOP 循環體;END LOOP;”。
本教程操作環境: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;
運行結果:
實戰示例:
使用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 < 3 loop i := i + 1; dbms_output.put_line(i); end loop; end;
運行結果:
實戰示例:
-- 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;
運行結果:
實戰示例:
配合游標使用
-- 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視頻教程》