ORA-00913: 값의 수가 너무 많습니다 (ORA-00913: too many values)

ORA-00913: too many values 오류는 테이블 또는 뷰에 정의한 열의 개수보다 더 많은 값을 인서트, 혹은 셀렉트를 시도할 때 발생합니다. 이번 시간에는 SELECT문과 INSERT문 두 가지 예시를 각각 들어 ORA-00913: 값의 수가 너무 많습니다 오류의 발생 원인을 이해하고 해결해 보도록 하겠습니다~

INSERT 시도 시, ORA-00913: 값의 수가 너무 많습니다 해결하기

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

댓글