programing

Oracle에서 오른쪽 괄호가 누락되었다고 생각하는 이유는 무엇입니까?

magicmemo 2023. 8. 4. 22:58
반응형

Oracle에서 오른쪽 괄호가 누락되었다고 생각하는 이유는 무엇입니까?

Oracle 10i에서 다음 명령을 실행합니다.

ALTER TABLE jnrvwchnglst ADD
     ( jnrvwchnglst_userid NUMBER(10) NOT NULL DEFAULT 1 )

네.jnrvwchnglst기존 테이블이며 아니요jnrvwchnglst_userid기존 열이 아닙니다.

Oracle 오류 메시지는 다음과 같습니다.

ORA-00907: missing right parenthesis

이 쿼리의 문제점과 Oracle에서 괄호가 누락되었다고 생각하는 이유는 무엇입니까?

ALTER TABLE jnrvwchnglst ADD
     ( jnrvwchnglst_userid NUMBER(10) DEFAULT 1  NOT NULL )

"(NOT) NULL"은 구문적으로 "ALTER"의 마지막 문이어야 합니다. 따라서 Oracle이 이를 보았을 때 다음 문자("DEFAULT" stmt)가 예상 종료 권한이 아닙니다.")가 오류를 발생시켰습니다.

이전에도 열을 추가할 수 없고 동일한 문에서 기본값/제약 조건을 설정할 수 없는 문제가 발생한 적이 있습니다.오른쪽 괄호 없음'은 빨간색-헤링입니다.Oracle은 괄호와 관련이 없는 경우에 해당 오류를 사용하는 것을 좋아합니다(내 생각에는 구문 분석 로직이 00907까지 연결되는 것 같습니다).

해라

ALTER TABLE jnrvwchnglst ADD ( nrvwchnglst_userid NUMBER(10) );
ALTER TABLE jnrvwchnglst ALTER ( nrvwchnglst_userid  SET DEFAULT 1 );
UPDATE jnrvwchnglst SET nrvwchnglst_userid = 1 WHERE nrvwchnglst_userid IS NULL;
ALTER TABLE jnrvwchnglst  ALTER ( nrvwchnglst_userid  SET NOT NULL );

언급URL : https://stackoverflow.com/questions/706503/why-does-oracle-think-im-missing-a-right-parenthesis

반응형