작업 환경
- DB서버 Windows컴퓨터
- OS : Widows Server 2012 R2
- IP Address(예) : 192.168.220.132
오류 재현
다음과 같이 문장 부호 세미콜론(semicolon)은 오라클에서 SQL문장의 종료 기호로 사용됩니다. 잘못된 장소에 사용하면 다음과 같은 오류가 표시됩니다.
SQL> select object_name from user_objects ; order by object_name;
select object_name from user_objects ; order by object_name
*
1행에 오류:
ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다
숫자를 시작하는 테이블 별명을 사용하면 다음 과 같은 오류가 표시됩니다.
SQL> select object_name from user_objects 123nickname order by object_name;
select object_name from user_objects 123nickname order by object_name
*
1행에 오류:
ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다
버전에 따라 함수를 실행해서 테이블 형태로 출력을 하는경우 다음 과 같은 오류가 표시됩니다.
SQL> select * from getEmployList('Manager');
*
1행에 오류:
ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다
참고로 영문메시지로 표시되면 다음과 같습니다.
C:\>set nls_lang=American_America.AL32UTF8
SQL> select object_name from user_objects ; order by object_name;
select object_name from user_objects ; order by object_name
*
ERROR at line 1:
ORA-00933: SQL command not properly ended
수정후 실행 결과
잘못된 장소에 사용된 세미콜론(semicolon)을 삭제하고 다시 실행합니다. 실행 결과는 다음과 같습니다.
SQL> select object_name from user_objects order by object_name;
OBJECT_NAME
-----------------------------------------------------------------
AQ$_INTERNET_AGENTS
AQ$_INTERNET_AGENT_PRIVS
... 중간 생략 ...
460 rows selected.
숫자를 시작하는 테이블 별명을 영문으로 변경하고 다시 실행합니다. 실행 결과는 다음과 같습니다.
SQL> select object_name from user_objects nickname order by object_name;
OBJECT_NAME
-----------------------------------------------------------------
AQ$_INTERNET_AGENTS
AQ$_INTERNET_AGENT_PRIVS
... 중간 생략 ...
460 rows selected.
테이블형 출력 함수를 사용하여 다시 실행합니다. 실행 결과는 다음과 같습니다.
SQL> select * from Table(getEmployList('Manager'));
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
----- ------ ------- ---- -------- ---- ---- ------
7566 JONES MANAGER 7839 81/04/02 2975 20
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7782 CLARK MANAGER 7839 81/06/09 2450 10