2009-12-31 35 views

cevap

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

Kullanım:

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

Oracle 9i +:

var = COALESCE(Var, 5) 

Diğer alternatifler:

var = NVL(var, 5) 

Referans:

2

daima boş bir şey asla, daha küçük, daha eşit veya eşit olmayan olduğu gibi PL/SQL koşullu maddelerinde nulls dikkatli olmayı unutmayın NVL fonksiyonu var. Onlardan kaçınmanın en iyi yolu nvl kullanmaktır. Örneğin

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

için

veriyorsan maddesinin içine gider.

Bunlar işe yarar.

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

başka yöntem

var := coalesce (var, 5); 

BIRLEŞIM Oracle NVL fonksiyonunun eşdeğer ANSI (veya daha az) olduğu.

11

PL/SQL tüm karşılaştırmalar çünkü NULL dönüş NULL için NULL test etmek için böyle '=' veya '<>' olarak kullanabilirsiniz olamaz. NULL'a karşı bir şey karşılaştırmak için, tam olarak bu amaç için olan IS NULL veya IS NOT NULL özel operatörlerini kullanmanız gerekir.Böylece, yerine

IF var = NULL THEN... 

yazma size de NVL yerleşik işlevini kullanma seçeneği verdiğim durumda

IF VAR IS NULL THEN... 

yazmalı. NVL iki argüman alır, birincisi değişken, ikincisi ise bir değer (sabit veya hesaplanmış). NVL ilk bağımsız değişkenine bakar ve ilk bağımsız değişkenin NULL olduğunu bulursa ikinci bağımsız değişkeni döndürür. NVL numaralı ilk argüman NULL değilse, ilk argüman döndürülür. Yani umarım bu yardımcı olur

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

var := NVL(var, 5); 

olarak yeniden başladı.

+2

Size bunu söylemek için 5 yıl bekledim, ama cevabınız için teşekkürler. –

İlgili konular