【Oracle】IF語句


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和內存資源的條件放到整個條件集的最后。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM