用法:1、“if THEN END IF”語(yǔ)句決定單個(gè)條件下語(yǔ)句是否執(zhí)行;2、“IF THEN ELSE END IF”語(yǔ)句決定兩個(gè)條件下語(yǔ)句是否執(zhí)行;3、“IF THEN LESIF ELSE END IF”語(yǔ)句決定多個(gè)條件語(yǔ)句是否執(zhí)行。
本教程操作環(huán)境:Windows10系統(tǒng)、oracle 11g版、Dell G3電腦。
oracle中if的用法是什么
IF語(yǔ)句可以有3種使用方法,如下表:
1.1?IF-THEN組合
IF-THEN語(yǔ)法的常見格式如下:
IF?condition THEN ??????...執(zhí)行的語(yǔ)句... END?IF;
其中,condition是一個(gè)布爾類型的變量、常量,其值可能存在三種情況:TRUE,FALSE,NULL
例如存在這樣的條件?IF?sal?>?1000;?dbms_output.put_line(‘null’);END?IF;,這個(gè)條件可能返回TRUE,FALSE,但是當(dāng)sal的值是NULL的時(shí)候,也就是:IF?NULL?>?1000,返回的值就是NULL
上述情況為了避免NULL值產(chǎn)生,我們可以使用IF?sal?>?1000?OR?sal?is?null;?dbms_output.put_line(‘null’);END?IF;來(lái)避免,也可以使用空值處理函數(shù)處理
1.2?IF-THEN-ELSE組合
語(yǔ)法格式如下:
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也是不行的。
語(yǔ)法格式如下:
IF?condition-1 THEN ??????statements-1 ELSIF?condition-N THEN ??????statements-N [ELSE ??????else-statements] END?IF;
2.短路求值
PL/sql使用短路求值方法,也就是說(shuō)PL/SQL不需要對(duì)一個(gè)IF語(yǔ)句中的所有表達(dá)式都去求值。比如,當(dāng)對(duì)下面這個(gè)IF語(yǔ)句中的表達(dá)式求值的時(shí)候,如果第一個(gè)條件是FALSE或者NULL,則PL/SQL會(huì)停止對(duì)表達(dá)式繼續(xù)求值,立即跳轉(zhuǎn)到ELSE分支上;
IF?condition1?AND?condition2 THEN ??????... ELSE ??????... END?IF;
根據(jù)短路求值原理,存在多個(gè)條件時(shí),一定要將會(huì)消耗大量的CPU和內(nèi)存資源的條件放到整個(gè)條件集的最后。
推薦教程:《Oracle視頻教程》