validar - Compruebe si una variable es nula en plsql
nvl oracle (8)
De otra manera:
var := coalesce (var, 5);
COALESCE es el equivalente ANSI (más o menos) de la función NVL de Oracle.
Quiero comprobar si una variable es nula. Si es nulo, entonces quiero establecer un valor para esa variable:
//data type of var is number
if Var = null then
var :=5;
endif
Pero me estoy equivocando. ¿Cómo puedo comprobar si una variable es nula?
Estoy usando el tipo de datos oracle
En PL / SQL no puede usar operadores como ''='' o ''<>'' para probar NULL
porque todas las comparaciones con NULL
devuelven NULL
. Para comparar algo con NULL
, debe usar los operadores especiales IS NULL
o IS NOT NULL
que están precisamente para este propósito. Así, en lugar de escribir
IF var = NULL THEN...
Deberías escribir
IF VAR IS NULL THEN...
En el caso de que lo hayas dado, también tienes la opción de usar la función incorporada de NVL
. NVL
toma dos argumentos, el primero es una variable y el segundo es un valor (constante o computado). NVL
mira su primer argumento y, si encuentra que el primer argumento es NULL
, devuelve el segundo argumento. Si el primer argumento de NVL
no es NULL
, se devuelve el primer argumento. Para que pudieras reescribir
IF var IS NULL THEN
var := 5;
END IF;
como
var := NVL(var, 5);
Espero que esto ayude.
Recuerde siempre tener cuidado con los valores nulos en las cláusulas condicionales pl / sql, ya que null nunca es mayor, más pequeño, igual o desigual a cualquier cosa. La mejor manera de evitarlos es usar nvl.
Por ejemplo
declare
i integer;
begin
if i <> 1 then
i:=1;
foobar();
end if;
end;
/
Nunca va dentro de la cláusula if.
Esto funcionaría.
if 1<>nvl(i,1) then
if i<> 1 or i is null then
También está la función NVL
Usar es nulo
usar si var es nulo
if var is NULL then
var :=5;
end if;