Agradeceríamos tu apoyo para difundir nuestras crónicas con relación a las ciencias informáticas.
Solución:
if var is NULL then
var :=5;
end if;
Utilizar:
IF Var IS NULL THEN
var := 5;
END IF;
Oráculo 9i+:
var = COALESCE(Var, 5)
Otras alternativas:
var = NVL(var, 5)
Referencia:
- JUNTARSE
- NVL
- NVL2
En PL/SQL no puede usar operadores como ‘=’ o ‘<>‘ para probar NULL
porque todas las comparaciones con NULL
regreso NULL
. Comparar algo contra NULL
necesitas usar los operadores especiales IS NULL
o IS NOT NULL
que están allí 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 que te hayas dado también tienes la opción de utilizar el NVL
función incorporada. NVL
toma dos argumentos, el primero es una variable y el segundo es un valor (constante o calculado). 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. Entonces podrías reescribir
IF var IS NULL THEN
var := 5;
END IF;
como
var := NVL(var, 5);
Espero que esto ayude.
EDITAR
Y como han pasado casi diez años desde que escribí esta respuesta, celebremos ampliándola un poco.
los COALESCE
función es el equivalente ANSI de Oracle NVL
. Se diferencia de NVL
en un par de buenas maneras en mi opinión:
-
Toma cualquier número de argumentos y devuelve el primero que no es NULL. Si todos los argumentos pasan a
COALESCE
son NULL, devuelve NULL. -
En contraste con
NVL
,COALESCE
solo evalúa los argumentos si debe hacerlo, mientras queNVL
evalúa ambos argumentos y luego determina si el primero es NULL, etc. EntoncesCOALESCE
puede ser más eficiente, porque no pierde tiempo evaluando cosas que no se usarán (y que potencialmente pueden causar efectos secundarios no deseados), pero también significa queCOALESCE
no es un reemplazo directo 100% sencillo paraNVL
.
Reseñas y calificaciones del tutorial
Si haces scroll puedes encontrar las referencias de otros desarrolladores, tú además puedes dejar el tuyo si lo deseas.