Oracle PL SQL之LOOP迴圈控制語句

2021-09-07 22:14:04 字數 3688 閱讀 9072

在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 建立測試包。二 案例的分...