web-dev-qa-db-fra.com

Vérifiez si une variable est nulle dans plsql

Je veux vérifier si une variable est nulle. Si elle est nulle, je veux définir une valeur pour cette variable:

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

Mais je me trompe. Comment puis-je vérifier si une variable est nulle?

J'utilise le type de données Oracle

27
user223541
if var is NULL then
  var :=5;
end if;
53
Priyank

Utilisation:

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

Oracle 9i +:

var = COALESCE(Var, 5)

Autres alternatives:

var = NVL(var, 5)

Référence:

18
OMG Ponies

En PL/SQL, vous ne pouvez pas utiliser d'opérateurs tels que '=' ou '<>' pour tester NULL car toutes les comparaisons avec NULL renvoient NULL. Pour comparer quelque chose avec NULL, vous devez utiliser les opérateurs spéciaux IS NULL ou IS NOT NULL qui sont là précisément dans ce but. Ainsi, au lieu d'écrire

IF var = NULL THEN...

tu devrais écrire

IF VAR IS NULL THEN...

Dans le cas que vous avez indiqué, vous avez également la possibilité d'utiliser la fonction intégrée NVL. NVL prend deux arguments, le premier étant une variable et le second une valeur (constante ou calculée). NVL examine son premier argument et, s'il trouve que le premier argument est NULL, retourne le deuxième argument. Si le premier argument de NVL n'est pas NULL, le premier argument est renvoyé. Vous pouvez donc réécrire

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

comme

var := NVL(var, 5);

J'espère que ça aide.

13
Bob Jarvis

Utilisez IS NULL

page de référence

4
Arthur Thomas
3
Andy White

Autrement:

var := coalesce (var, 5);

COALESCE est l'équivalent ANSI (plus ou moins) de la fonction NVL d'Oracle.

2
Tony Andrews

N'oubliez pas de faire attention aux valeurs null dans les clauses conditionnelles pl/sql car null n'est jamais plus grand, plus petit, égal ou inégal à quoi que ce soit. La meilleure façon de les éviter est d'utiliser nvl.

Par exemple

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

N'entre jamais dans la clause if.

Cela fonctionnerait.

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

utiliser si var est nul

2
Dapeng