2009-12-31 125 views
19

我想檢查變量是否爲空。如果它爲空,那麼我想爲該變量設置一個值:檢查plsql中的變量是否爲空

//data type of var is number 
if Var = null then 
    var :=5; 
endif 

但是我在其中發生錯誤。我如何檢查一個變量是否爲空?

我使用Oracle數據類型

回答

38
if var is NULL then 
    var :=5; 
end if; 
2

的使用,如果var爲空

17

用途:

IF Var IS NULL THEN 
    var := 5; 
ENDIF; 

的Oracle 9i中+:

var = COALESCE(Var, 5) 

其他替代方案:

var = NVL(var, 5) 

參考:

2

切記要小心在PL/SQL條件子句空爲空是永遠大於,小於,等於或不等於任何東西。避免它們的最好方法是使用nvl。

例如

declare 
    i integer; 
begin 
    if i <> 1 then 
    i:=1; 
    foobar(); 
    end if; 
end; 
/

永不熄滅的,如果子句中。

這些都行得通。

if 1<>nvl(i,1) then 
if i<> 1 or i is null then 
2

的另一種方法:

var := coalesce (var, 5); 

COALESCE是Oracle的NVL函數的ANSI當量(或多或少)。

11

在PL/SQL中,不能使用'='或'<>'等運算符來測試NULL,因爲所有與NULL的比較都返回NULL。要與NULL進行比較,您需要使用特殊運營商IS NULLIS NOT NULL,這些運營商正是爲此目的而使用的。因此,而不是寫

IF var = NULL THEN... 

你應該寫

IF VAR IS NULL THEN... 

在你給你也有使用NVL內置功能選項的情況。 NVL有兩個參數,第一個是變量,第二個是值(常量或計算)。 NVL查看它的第一個參數,如果它發現第一個參數是NULL,則返回第二個參數。如果NVL的第一個參數不是NULL,則返回第一個參數。所以,你可以重寫

IF var IS NULL THEN 
    var := 5; 
END IF; 

var := NVL(var, 5); 

我希望這有助於。

+2

我等了5年才告訴你這個,但是謝謝你的回答。 – 2014-05-30 19:30:20