SW/Database / / 2024. 4. 8. 09:15

ORA-01422: Exact fetch returns more than requested number of rows / 원인과 해결 방법

반응형


ORA-01422 에러는 SQL 문장에서 정확한 행 수를 요청했지만 반환된 행 수가 요청한 수보다 더 많을 때 발생합니다.

 

ORA-01422

 

에러 원인

 

단일 행 조회 예상: 단일 행 조회를 기대했지만 여러 행이 반환되는 경우에 발생합니다.
서브쿼리 사용: 서브쿼리를 사용하여 한 번에 하나의 행을 반환하는 것이 아니라 여러 행을 반환하는 경우에도 발생합니다.

 

해결 방법

 

조회 범위 제한: SQL 문장을 수정하여 반환되는 행 수를 요청한 수로 제한합니다.
서브쿼리 수정: 서브쿼리를 수정하여 단일 행을 반환하도록 변경합니다.
중복 데이터 처리: 반환된 결과에서 중복된 데이터를 처리하거나 필요한 데이터만 선택하여 사용합니다.

 

ORA-01422 에러 발생 테이블 및 해결 방안
employee_id employee_name department_id
1 John 100
2 Sarah 200
3 Emma 100
4 Michael 300

 

다음은 ORA-01422 에러가 발생하는 예시 SQL 문장입니다.

SELECT employee_id, employee_name
FROM employees
WHERE department_id = 100;

 

해결 방법 예시

SELECT employee_id, employee_name
FROM employees
WHERE department_id = 100
AND ROWNUM = 1;

 

 



ORA-01422 에러는 SQL 문장에서 요청한 행보다 더 많은 행을 반환할 때 발생합니다. 
이를 해결하기 위해서는 조회 범위를 제한하거나 서브쿼리를 수정하여 단일 행을 반환하도록 변경해야 합니다. 
데이터베이스를 사용할 때 이러한 점에 주의하여 SQL 문장을 작성해야 합니다.
반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유