Oracle/PLSQL: mensaje de error ORA-01427

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Oracle/PLSQL: mensaje de error ORA-01427

Aprenda por qué y cómo resolver los mensajes de error ORA-01427 en Oracle.

describir

Cuando encuentra un error ORA-01427, aparece el siguiente mensaje de error:

  • ORA-01427: la subconsulta de una sola fila devuelve más de una fila

razón

Ha intentado ejecutar una instrucción SQL que contiene una subconsulta SQL que devuelve varias filas.

resolver

Las opciones para resolver este error de Oracle incluyen:

Opción 1

Vuelva a escribir su consulta para que la subconsulta devuelva solo una fila.

Opcion 2

Cambie su consulta para usar una de las siguientes opciones para los resultados de la subconsulta:

  • ningún
  • todo
  • existe
  • no en

Por ejemplo, si intenta ejecutar la siguiente instrucción SQL:

SELECT *
FROM orders
WHERE supplier_id = (SELECT supplier_id
                     FROM suppliers
                     WHERE supplier_name="IBM");

y hay más de un registro en la tabla de proveedores con el nombre de proveedor IBM, obtendrá el siguiente mensaje:

La forma más común de corregir esta declaración SQL es usar una condición IN de la siguiente manera:

SELECT *
FROM orders
WHERE supplier_id IN (SELECT supplier_id
                      FROM suppliers
                      WHERE supplier_name="IBM");
(Visited 2 times, 1 visits today)