IF語句可以有3種使用方法,如下表:
IF類型 | 特點 |
---|---|
IF THEN END IF; |
這是if最簡單的語法。IF與WHEN之間的條件決定了在WHEN和END IF之間一系列語法是否會被執行。如果條件部分的求值結果是FALSE或者NULL,這些代碼就不會被執行。 |
IF THEN ELSE END IF; |
這種組合形式的邏輯實現了二選一的邏輯。根據對位於IF和THEN兩個關鍵字之間的條件的求值結果,要么THEN和ELSE之間的代碼被執行,要么ELSE和END IF之間的代碼被執行。總之,這兩部分代碼肯定是有一個會被執行。 |
IF THEN LESIF ELSE END IF; |
這是IF語句最后一個也是最復雜的使用形式。IF語句會從一系列互斥條件中選擇一個TRUE的,然后執行該條件關聯語句。 |
1.IF語句語法
1.1 IF-THEN組合
IF-THEN語法的常見格式如下:
IF condition
THEN
...執行的語句...
END IF;
其中,condition
是一個布爾類型的變量、常量,其值可能存在三種情況:TRUE,FALSE,NULL
三值邏輯
例如存在這樣的條件
IF sal > 1000; dbms_output.put_line('null');END IF;
,這個條件可能返回TRUE
,FALSE
,但是當sal
的值是NULL
的時候,也就是:IF NULL > 1000
,返回的值就是NULL
上述情況為了避免NULL
值產生,我們可以使用IF sal > 1000 OR sal is null; dbms_output.put_line('null');END IF;
來避免,也可以使用空值處理函數處理
1.2 IF-THEN-ELSE組合
語法格式如下:
IF condition
THEN
... TRUE sequence of executeable statements ...
ELSE
... FALSE/NULL sequence of executeable statements ...
END IF;
1.3 IF-THEN-ELSIF組合
要特別注意:此處是ELSIF不是ELSEIF,寫成ELSE IF也是不行的。
語法格式如下:
IF condition-1
THEN
statements-1
ELSIF condition-N
THEN
statements-N
[ELSE
else-statements]
END IF;
2.短路求值
PL/SQL使用短路求值方法,也就是說PL/SQL不需要對一個IF語句中的所有表達式都去求值。比如,當對下面這個IF語句中的表達式求值的時候,如果第一個條件是FALSE或者NULL,則PL/SQL會停止對表達式繼續求值,立即跳轉到ELSE分支上;
IF condition1 AND condition2
THEN
...
ELSE
...
END IF;
根據短路求值原理,存在多個條件時,一定要將會消耗大量的CPU和內存資源的條件放到整個條件集的最后。