ORA-01422: Exact fetch returns more than requested number of rows

En PL SQL, el error ORA-01422: Exact fetch returns more than requested number of rows se produce cuando se tiene una consulta SELECT - INTO que devuelve más de una fila.

Por ejemplo:

PLSQL:
  1. n_orderid   NUMBER;
  2. SELECT o.orderId
  3. INTO n_orderid
  4. FROM t_ordenes o
  5. WHERE o.status = 'a'
  6. DBMS_OUTPUT.put_line('Error '||SQLERRM);
  7. END;

Si es que la se tienen varias filas que cumplan la condición, arrojará un error.

¿Cómo manejar el error?

Podemos hacer algunas cosas:

  • Lo recomendable, si es que existe la posibilidad de obtener más de una fila, se deben usar cursores o registros.
  • Otra opción, si es que en verdad se desea obtener sólo una fila es agregar condiciones al WHERE para restringir la consulta a un sólo resultado.
  • O se puede manejar la excepción y enviar un mensaje de error en caso la consulta devuelva más de una fila:
PLSQL:
  1. n_orderid   NUMBER;
  2. SELECT o.orderId
  3. INTO n_orderid
  4. FROM t_ordenes o
  5. WHERE o.status = 'a'
  6. DBMS_OUTPUT.put_line('Error, la consulta devolvió más de una fila. Verifique los parámetros');
  7. DBMS_OUTPUT.put_line('Error '||SQLERRM);
  8. END;

Entradas Relacionadas:
  • ORA-01403 No data found
  • Escribir archivo en PL SQL
  • 0 Respuestas a “ORA-01422: Exact fetch returns more than requested number of rows”


    1. Ningún Comentario

    Añade un Comentario