Problema con los NVL en Oracle

Hola,
Desde hace un tiempo estoy comprobando que todods los problemas que he diseñado en mi empresa y que utilizan NVL están fallando, ya que si no encuentran datos en lugar de devolverme un 0 me devuelve un NO_DATA_FOUND.
Esto esta provocando errores en la base de datos y el consiguiente trabajo de revisar todos los programas que contengan sentencias con NVL.
La version de la bases de datos es 10.2.0.2.0 y forms 6i.
Cuando se desarrollaron los diferentes fmx. En su día, funcionaban correctamente y devolvían el 0.
No se si me han migrado la base de datos de versión.(¿Podría tener algo que ver si fuera así?)
Si me pudieras dar una pista de lo que pasa te lo agradecería,

1 Respuesta

Respuesta
1
La migración de la base de datos no debería dar ningún problema, lo que te ha de estar dando problemas es en si la función NVL, me parece extraño que antes te funcionara ya que el NO_DATA_FOUND es independiente de la version tanto del Forms como de la base, se me ocurre que antes si encontraba un registro especifico y el campo contenía el valor NULL y actualmente quizás están realizando otro tipo de búsquedas y la consulta no devuelve datos. Te puedo sugerir cambiar en la forma la utilización del NVL por una función dentro del mismo forms que te devuelva el valor null en caso que no encuentre un registro similar a algo así:
function valida return number is
 vcampo number;
begin
    select campo into vcampo from table where condicion=xx;
    return vcampo;
    exception
     when no_data_found then
     return null;
end;
Claro que tendrías que de alguna forma estar reevaluando la consulta según los casos o aun el tipo de dato, luego a la función le puedes aplicar el NVL(valida, XXXX).
Espero te sirva. Éxitos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas