ORA-00913: too many values 오류는 테이블 또는 뷰에 정의한 열의 개수보다 더 많은 값을 인서트, 혹은 셀렉트를 시도할 때 발생합니다. 이번 시간에는 SELECT문과 INSERT문 두 가지 예시를 각각 들어 ORA-00913: 값의 수가 너무 많습니다 오류의 발생 원인을 이해하고 해결해 보도록 하겠습니다~
INSERT 시도 시, ORA-00913: 값의 수가 너무 많습니다 해결하기
ORA-00913 오류는 일반적으로 INSERT 문을 사용하여 테이블에 데이터를 인서트 하려고 할 때 발생하는 경우가 많습니다. 다음은 인서트 하는 값의 수가 테이블의 컬럼 수보다 많아서 오류가 발생하는 예시 자료입니다.
이 예제에서 DEPT 테이블에 (DEPTNO, DNAME) 컬럼을 인서트 하려고 시도하는데, VALUES 대상이 (0, 'DEV, 'BUSAN')으로 값의 수가 많은 경우를 보여드립니다. 두 개의 컬럼에 세 개의 값을 인서트를 하려고 했기에, ORA-00913: too many values 오류가 발생하는 것을 확인할 수 있습니다.
INSERT INTO DEPT (DEPTNO, DNAME)
VALUES (0, 'DEV', 'BUSAN');
ERROR at line 1:
ORA-00913: too many values
ORA-00913: 값의 수가 너무 많습니다 오류를 해결하려면 인서트 값의 수가 테이블의 컬럼 수와 일치하도록 확인해야 합니다. 다음은 값의 수를 맞추어 정상적으로 인서트 하는 예시입니다.
INSERT INTO DEPT (DEPTNO, DNAME)
VALUES (0, 'DEV');
1 row created.
SELECT 시도 시, ORA-00913: 값의 수가 너무 많습니다 해결하기
컬럼의 수가 많은 경우는 인서트 외에도 셀렉트 등에도 일어날 수 있는 오류입니다. 다음은 IN 조건에 1개의 컬럼이 와야 하는 상황인데, 그보다 많은 수의 셀렉트로 인하여 오류가 발생하는 예시 자료입니다.
SELECT *
FROM DUAL
WHERE DUMMY IN (SELECT 'X', 'Y', 'Z' FROM DUAL);
ERROR at line 3:
ORA-00913: too many values