在pl/sql中可以使用loop語句對資料進行迴圈處理,利用該語句可以迴圈執行指定的語句序列。常用的loop迴圈語句包含3種形式:基本的loop、while...loop和for...loop。
loop語句的基本語法結構如下:
[<>
]loop
statement...
end loop [
label_name
]【語法說明】
<>
:loop結構的標籤,是可選項。
loop:loop迴圈開始標誌。
statement:loop語句中迴圈執行的語句序列。
end loop:loop迴圈結束標誌,可以新增loop結構的標籤。
1.基本的loop語句
例項:要求宣告變數,每次迴圈都需要為變數增加數字1,並輸出結果。當變數值大於3時,退出迴圈操作。
a、利用exit...when結束迴圈操作。
sql>set serveroutput on
;sql
>
--exit when
sql>
declare
2 v_rlt number(8):=-3;
3begin
4<>
5loop
6 dbms_output.put_line('
v_rlt = '||
v_rlt);
7 v_rlt:=v_rlt+1;
8exit fst_loop when v_rlt >3;
9endloop;
10 dbms_output.put_line('
loop迴圈已經結束!');
11end; 12
/v_rlt =-
3v_rlt =-
2v_rlt =-
1v_rlt =0
v_rlt =1
v_rlt =2
v_rlt =3
loop迴圈已經結束! pl
/sql procedure successfully completed
b、利用if...exit語句結束迴圈
sql>--if exit
sql>
declare
2 v_rlt number(8):=-3;
3begin
4<>
5loop
6 dbms_output.put_line('
v_rlt = '||
v_rlt);
7 v_rlt:=v_rlt+1;
8if v_rlt >
3then
9 dbms_output.put_line('
變數的值已經大於3,當前值為'||
v_rlt); 10
exit
fst_loop; 11
endif;
12end
loop fst_loop;
13 dbms_output.put_line('
loop迴圈已經結束!');
14end; 15
/v_rlt =-
3v_rlt =-
2v_rlt =-
1v_rlt =0
v_rlt =1
v_rlt =2
v_rlt =3
變數的值已經大於3,當前值為4
loop迴圈已經結束! pl
/sql procedure successfully completed
2、while...loop結構
[<>
]while
boolean_expression
loop
statement...
end loop [
label_name];
【語法說明】
boolean_expression:布林表示式。
statement:語句序列,當boolean_expression為true時,該語句序列可獲得執行權。
c、while...loop結構
sql>--while...loop
sql>
declare
2 v_rlt number(8):=-3;
3begin
4<>
5while(v_rlt <4)
6loop
7 dbms_output.put_line('
v_rlt = '||
v_rlt);
8 v_rlt:=v_rlt+1;
9endloop while_loop;
10 dbms_output.put_line('
while迴圈已經結束!');
11end; 12
13/v_rlt =-
3v_rlt =-
2v_rlt =-
1v_rlt =0
v_rlt =1
v_rlt =2
v_rlt =3
while迴圈已經結束! pl
/sql procedure successfully completed
3.for...loop結構for...loop語句的語法結構如下:
[<>
]for index_name in
[reverse
]lower_bound .. upper_bound
loop
statement...
end loop [
label_name];
【語法說明】
index_name:迴圈計數器,是乙個變數,它可以得到當前的迴圈指數。需要注意的是,不能為其手工賦值。
reverse
:可選項,指定迴圈方式。預設的迴圈方式由下標(lower_bound)到上標(upper_bound)。使用該選項則從上標界到下標界。
lower_bound:迴圈範圍的下標界。
upper_bound:迴圈範圍的上標界。
下標和上標之間的".."不能省略。
d、for...loop結構
sql>--for..loop
sql>
begin
2for v_rlt in
-3..3
loop
3 dbms_output.put_line('
v_rlt = '||
v_rlt); 4
endloop;
5 dbms_output.put_line('
for迴圈已經結束!');
6end; 7
/v_rlt =-
3v_rlt =-
2v_rlt =-
1v_rlt =0
v_rlt =1
v_rlt =2
v_rlt =3
for迴圈已經結束! pl
/sql procedure successfully completed
oracle pl sql之oracle儲存過程
儲存過程是一種命名pl sql程式塊,它可以被賦予引數,儲存在資料庫中,可以被使用者呼叫。由於儲存過程是已編譯好的 所以在呼叫的時候不必再次進行編譯,從而提高了程式的執行效率。另外使用儲存過程可以實現程式的模組化設計 儲存過程的語法 create or replace procedure proce...
Oracle PL SQL入門之案例實踐
前面已經了解了關於 pl sql程式設計的基礎,本文將結合乙個案例來加深對這些知識點的理解。一 案例介紹 某資料庫有兩張表,是關於某公司員工資料 薪水和部門資訊的,它們分別是emp表和dept表,兩張表的結構如下 要求如下 1 按照上表結構建立相應的表,並每張表寫入5組合法資料。2 操縱相關表,使得...
Oracle PL SQL入門之案例實踐
一 案例介紹 某資料庫有兩張表,是關於某公司員工資料 薪水和部門資訊的,它們分別是emp表和dept表,兩張表的結 構如下 要求如下 1 按照上表結構建立相應的表,並每張表寫入5組合法資料。2 操縱相關表,使得 技術部 的員工的薪水 20 3 建立日誌,追蹤薪水變動情況。4 建立測試包。二 案例的分...