본문 바로가기
[개발] Programming/Database

ora-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다. 오류

by eatyourKimchi 2019. 5. 28.

 

ora-01427 오류

 

오라클에서 하나의 값이 리턴되어야 하는데, 2개 이상의 값이 리턴되면 발생하는 오류.
몇 가지 케이스를 예로 들면, 

 

 

1. 오라클 함수
null 체크를 할 수 있는 NVL() 함수를 사용할 때 리턴되는 값이 둘 이상이면 발생.
해결 방법은 하나의 값만 리턴하게 만드는 방법 밖에는 없다.

 

 

2. WHERE 조건
쿼리에서 WHERE에 비교하는 경우 '='을 사용하면 하나의 값만 비교가 가능함.
근데 만약 2개 이상의 값을 입력하는 경우 오류가 발생.

 

1
2
3
4
SELECT *  
  FROM TEST_TABLE_A 
 WHERE NAME = (SELECT NAME FROM TEST_TABLE_B) 
 
cs

 

 

이때 WHERE 조건에 있는 'SELECT NAME FROM TEST_TABLE_B' 쿼리에서 리턴되는 값 'NAME'이 하나 이상이면 오류가 발생한다. 해결하기 위해서는 '='을 'IN'으로 바꿔서 여러 값을 비교하면 된다.

 

1
2
3
4
SELECT *  
  FROM TEST_TABLE_A 
 WHERE NAME IN (SELECT NAME FROM TEST_TABLE_B) 
 
cs

 

 

댓글