所有的決策結構都要求程序員指定一個或多個要由程序評估或測試的條件,以及語句或要執行的語句(如果條件被確定為假)。下麵給出的是在大多數編程語言中發現的結構-
這種語言提供了以下類型的決策陳述。
- if - then語句
這是IF控製語句的最簡單形式,經常用於決策製定和更改程序執行的控製流。這將一個條件與由關鍵字THEN和END IF所包含的語句序列關聯起來。如果條件為TRUE,則執行語句,如果條件為FALSE或NULL,則If語句不執行任何操作。
語法:
IF條件THEN S;如果;其中condition是布爾型或關係型條件,S是簡單型或複合型語句。讓我們看看這個例子IF (x==10) THEN c:= c+1;如果;/如果給定的布爾表達式的計算結果為真,則If語句中的代碼將被執行,否則,如果計算結果為假,則If語句結束後的第一組代碼將被執行。例如:DECLARE一個數字(2):= 8;BEGIN a:= 8;——使用if語句if (a<20) THEN dbms_output檢查布爾條件。Put_line (' a小於20 ');如果; dbms_output.put_line(‘value of a is :’ || a); END; / When we execute the code, we get following the result: a is less than 20 value of a is: 8 PL/SQL procedure successfully completed.
- if - then - else語句
之後是一係列IF-THEN語句,然後是可選的ELSE語句序列,當條件為FALSE時執行。
語法:
IF條件THEN S1;其他S2;如果;
PL/SQL過程成功完成。
- IF-THEN-ELSEIF聲明
這個條件語句允許您在幾個選項中進行選擇。這個條件語句後麵可以跟著一個可選的ELSEIF…ELSE語句。這個ELSIF子句允許我們添加額外的條件。
當我們使用這個條件陳述時,我們必須記住某些點,比如
- 它是ELSIF,不是ELSEIF
- 這個語句可以有0個ELSE,也可以有1個ELSE,並且這個語句緊跟在所有ELSIF之後。
- 這個語句可以有0個或1個ELSIF,並且它出現在任何ELSE之前。
- 如果ELSIF成功,其餘的ELSIF 'S或ELSE 'S將不被測試。
語法:
IF (boolean表達式1)THEN S1;——當布爾表達式1為真時執行。ELSIF (boolean表達式2)THEN S2;——當布爾表達式2為真時執行。ELSIF (boolean_expression 3) THEN S3;——當布爾表達式3為真時執行。其他S4;——當上述條件都不為真時執行。如果;示例:DECLARE x number(3):= 10; BEGIN IF ( x = 10 ) THEN dbms_output.put_line(' x is 10' ); ELSIF ( x = 20 ) THEN dbms_output.put_line(' x is 20' ); ELSE dbms_output.put_line('None of the values is matching'); END IF; dbms_output.put_line(' value of x is: '|| x ); END; / When we execute the above code, we will get following result: x is 10 Exact value of x is: 100
PL/SQL過程成功完成
- Case語句
它和IF語句一樣,選擇一個語句序列來執行。因此,為了選擇序列,CASE語句使用選擇器而不是多個布爾表達式。Selector是一個表達式,它的值用於從幾個選項中選擇一個。
語法:CASE選擇器WHEN ' value1 ' THEN S1;當' value1 ' THEN S2;當' value1 ' THEN S3;當' value1 ' THEN S4;…其他Sn;——默認情況示例:DECLARE grade char(1):= 'B';當grade = 'A'時,dbms_output.put_line('Excellent');當grade = 'B'時,dbms_output。put_line(“非常好”); else dbms_output.put_line('No such grade'); end case; END; / When we execute the above code, we get following oputput1: Very Good PL/SQL procedure successfully complete
5.搜索CASE語句
這個條件語句沒有選擇器,該語句的WHEN子句包含給出布爾值的搜索條件。
語法:CASE WHEN selector = ' value1 ' THEN S1;WHEN selector = ' value2 ' THEN S2;WHEN selector = ' value3 ' THEN S3;WHEN selector = ' value4 ' THEN S4;....其他Sn;——默認情況示例:DECLARE grade char(1):= 'A';當grade = 'A'時,dbms_output.put_line('Excellent');當grade = 'B'時,dbms_output。put_line(“非常好”); else dbms_output.put_line('No such grade'); end case; END; / When we execute the above code, we get following output Excellent PL/SQL procedure successfully completed.
嵌套IF- then -ELSE在PL/SQL編程中嵌套IF-ELSE語句是合法的,這意味著我們可以在另一個IF或ELSE IF語句中使用一個IF或ELSIF語句。語法:IF (boolean_expression 1) THEN——當給定的布爾表達式1為真時執行IF (boolean_expression 2) THEN——當給定的布爾表達式2為真時執行。如果;ELSE——當給定的布爾表達式1不為真時執行。例如:DECLARE一個數字(3):= 10;B數(3):= 20;BEGIN——檢查布爾條件IF(a = 10) THEN——如果條件為真,則檢查以下IF(b = 200) THEN——如果條件為真,則打印如下dbms_output。put_line('值a是10,b是20');如果;如果;dbms_output。put_line(' value of a is : ' || a ); dbms_output.put_line('value of b is : ' || b ); END; / When we execute the above code, we get following output Value of a is 10 and b is 20 value of a is: 10 value of b is: 20
PL/SQL過程成功完成。