Saltar al contenido
WaitScope Entrar Solicitar acceso (por correo) Menú

ORA-01403 (fin de datos) en el trace

El hallazgo FIM_DE_DADOS aparece cuando el único error del trace es el ORA-01403, el fin normal de una lectura. Vea los casos en que merece atención.

Se aplica a: Traces 10046

El ORA-01403 es el código de "no se encontraron datos". En la lectura de un cursor, solo marca el fin normal de los datos. Por eso el informe lo separa de los demás errores y, cuando es el único código del trace, muestra un hallazgo solo informativo.

Síntomas

En el Diagnóstico aparece el hallazgo n ORA-01403 (fin de datos) (FIM_DE_DADOS), con el texto Normal en bucles de lectura. y el enlace Ver errores. La gravedad es información, sin porcentaje del tiempo total.

El hallazgo aparece solo cuando el ORA-01403 es el único código de error del trace. Si hay otro código, aparece en su lugar el hallazgo de errores de Oracle en el trace, cuyo recuento deja fuera el 1403. Las ocurrencias de ORA-01403 siguen listadas en la sección Errores en los dos casos.

Causa

La tarjeta del código, en la sección Errores, resume los dos orígenes:

  • En un select ... into en PL/SQL, la consulta no devolvió ninguna fila, y el PL/SQL lanza la excepción NO_DATA_FOUND.
  • En el fetch de un cursor, es solo el fin normal de los datos: en bucles de lectura, aparece una vez por cursor recorrido.

Solución

La mayoría de las veces, no hay nada que corregir. Para comprobarlo:

  1. Haga clic en Ver errores.
  2. En la tarjeta del ORA-01403, revise en Dónde apareció la Llamada, la Sentencia, la Prof. y las Ocurrencias de cada lugar.

    Resultado: usted sabe qué sentencia genera el código y cuántas veces.

  3. Compare las ocurrencias con las ejecuciones de la sentencia, en Llamadas en su detalle.

Vale la pena actuar en tres casos:

  • Muchas ocurrencias que vienen de un select ... into que pesa en el tiempo: el código comprueba la existencia fila a fila y usa la excepción para controlar el flujo. Cámbielo por un SQL que trate el conjunto, con join, exists o merge (fila a fila en PL/SQL).
  • La fila debería existir, como un registro que falta o una clave errónea: el error es señal de datos inconsistentes. Compruebe el dato que busca la sentencia.
  • El PL/SQL oculta el error con when others then null: el mismo bloque oculta también los demás errores. Trate el NO_DATA_FOUND por su nombre.

Cómo confirmar

Si cambió el código, genere el trace de la misma operación y compare las ocurrencias del ORA-01403 en Errores y la columna Inclusivo (s) de la sentencia que lo generaba, en Sentencias SQL por contribución. Con el bucle cambiado por un SQL de conjunto, los dos bajan.

En el informe

El informe de ejemplo no tiene errores, y la sección Errores solo aparece cuando el trace tiene alguno.

Actualizado el 29/10/2026. Informar un error en esta página