|
|
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已! |
|
恭喜您是本站第 1729824
位訪客!
登入 | 註冊
|
|
|
|
發表者 |
討論內容 |
冷日 (冷日) |
發表時間:2019/5/30 15:11 |
- Webmaster

- 註冊日: 2008/2/19
- 來自:
- 發表數: 15773
|
- [轉貼]PL/SQL - 基本用法 判斷式, 迴圈
PL/SQL - 基本用法 判斷式, 迴圈 在Programming界中有一句話深刻的描述了程式語言的特性: , 這句話完完全全的說明了其實寫程式並不難, 回到本文, 前面講解了PL/SQL的程式架構, 接著要來介紹PL/SQL中程式語言最基本的邏輯語法 - 判斷式與迴圈。
IF ELSE if else是最基本也是最常用的邏輯判斷式, 程式根據所設置的條件來選擇執行哪一個分支, 以下是PL/SQL中IF ELSE的程式架構:
IF condition1 THEN statements [ ELSIF condition2 THEN statments ] [ ELSE
last_statements ] END IF; 這裡較特別的是condition後面要加上THEN, ELSE後面則不用加THEN, 整個IF ELSE區塊要以END IF作為結束, 以下為IF ELSE範例程式:
DECLARE A VARCHAR2(1) := 'N'; BEGIN IF A = 'Y' THEN DBMS_OUTPUT.PUT_LINE('YES'); ELSIF A = 'N' THEN DBMS_OUTPUT.PUT_LINE('NO'); ELSE DBMS_OUTPUT.PUT_LINE('UNKNOW'); END IF; END;
CASE case也就是程式語言中的switch case, switch case為if else的變形, 其實switch case可以直接用if else進行實作, 但是會較複雜, 而case還分為兩種形式, simple與searched CASE statement, 以下為 PL/SQL中 simple CASE 的程式架構: CASE selector WHEN expression1 THEN statements [ WHEN expression2 THEN statements ] .... [ ELSE statements ] END CASE; simple case statement主要是以selector的值作為選擇對象, expression作為selector值的選擇分支。 simple CASE 範例程式碼:
DECLARE grade VARCHAR2(1) := 'A'; BEGIN CASE grade WHEN 'A' THEN DBMS_OUTPUT.PUT_LINE('EXCELLENT'); WHEN 'B' THEN DBMS_OUTPUT.PUT_LINE('VERY GOOD'); WHEN 'C' THEN DBMS_OUTPUT.PUT_LINE('GOOD'); ELSE DBMS_OUTPUT.PUT_LINE('UNKNOW'); END CASE; END;
接著我們來看searched CASE的程式架構:
CASE WHEN condition1 THEN statements [ WHEN condition 2 THEN statements ] .... [ ELSE statements ] END CASE; searched CASE與simple CASE的差異在於searched使用condition替代expression, 使用condition就能變得較彈性, 但要控制好condition之間的互斥。 searched CASE 範例程式碼:
DECLARE grade VARCHAR2(1) := 'A'; BEGIN CASE WHEN grade = 'A' THEN DBMS_OUTPUT.PUT_LINE('EXCELLENT'); WHEN grade = 'B' THEN DBMS_OUTPUT.PUT_LINE('VERY GOOD'); WHEN grade = 'C' THEN DBMS_OUTPUT.PUT_LINE('GOOD'); ELSE DBMS_OUTPUT.PUT_LINE('UNKNOW'); END CASE; END;
FOR LOOP 當預先知道迴圈次數的情況下, 可以使用for loop, 以下為FOR LOOP程式架構: FORloop_counter IN[ REVERSE] lower_bound .. upper_bound LOOP statements END LOOP; 這裡要注意的是進行動作的statement區塊要放置於LOOP與END LOOP中, 如果有REVERSE關鍵字出現, 迴圈就會從 upper_bound開始遞減執行至 lower_bound。 FOR LOOP範例程式碼:
BEGIN FOR i IN 1..10 LOOP DBMS_OUTPUT.PUT_LINE(i); END LOOP; END;
輸出結果:1 2 3 4 5 6 7 8 9 10
LOOP(無窮迴圈) Simple Loop是PL/SQL較特別的迴圈, 從上面FOR LOOP來看, 我們可以發現FOR LOOP程式架構中包含了Simple Loop, Simple Loop本身是個無窮迴圈, 需要加上停止條件才能夠跳出, 以下為Simple Loop的程式碼架構:
LOOP statements EXIT WHEN condition; END LOOP; 當condition條件成立時會跳出LOOP。 LOOP範例程式碼:
DECLARE i INTEGER := 1; BEGIN LOOP DBMS_OUTPUT.PUT_LINE(i); i := i + 1; EXIT WHEN i = 10; END LOOP; END;
輸出結果:1 2 3 4 5 6 7 8 9
WHILE while loop是根據條件式來判斷迴圈是否繼續進行, 與上述LOOP EXIT WHEN是相同的, 不同的是while是要先判斷條件是在進行迴圈, 且判斷式是相反的, while判斷式成立就繼續迴圈, 而LOOP EXIT判斷的時機點可以自行選定, 以下為WHILE LOOP的程式碼架構:
WHILEcondition LOOP statement END LOOP;
WHILE範例程式碼:
DECLARE i INTEGER := 1; BEGIN WHILE i <= 10 LOOP DBMS_OUTPUT.PUT_LINE(i); i := i + 1; END LOOP; END;
原文出處:PL/SQL - 基本用法 判斷式, 迴圈
|
|
討論串
|