DBAtlas · Atlas de operações de banco de dados

ORA-01427: single-row subquery returns more than one row

Oracle

O que significa?

Uma subconsulta da qual se esperava uma única linha retornou mais de uma linha. Por exemplo, a subconsulta do lado direito de uma comparação de igualdade (=) produziu vários valores.

Por que acontece?

Uma subconsulta retornando várias linhas onde se espera = ou uma atribuição; uma condição WHERE insuficientemente restrita; uma correspondência não única na correlação; uma subconsulta escalar na lista do SELECT retornando várias linhas.

Como resolver

Restrinja a subconsulta para que ela retorne uma única linha (WHERE adicional, chave única). Se vários valores forem realmente esperados, use IN em vez de =: WHERE id IN (SELECT id FROM ...). Ou adicione uma agregação à subconsulta (MAX, MIN), ou reduza-a a uma linha com ROWNUM = 1. Primeiro execute a subconsulta isoladamente e verifique quantas linhas ela retorna.

Abrir no DBAtlas →

Mais entradas deste banco