728x90
반응형
SQL Error [933] [42000]: ORA-00933: SQL command not properly ended
해당 오류는 SQL 문장이 올바르게 종료되지 않았거나, 구문적으로 잘못된 부분이 있음을 나타낸다.
- 구문 오류 : SQL 문법이 잘못되었을 때 발생
- 부적절한 키워드 사용 : 특정 SQL 키워드가 잘못 사용되었을 때 발생
- 불필요한 세미콜론 또는 콤마
- 호환되지 않는 SQL 기능 사용 : 사용 중인 Oracle 버전에서 지원하지 않는 SQL 기능을 사용할 때 발생
1. 원인
현재 Oracle 12 Client 버전을 사용 중이며, 내가 배정 된 프로젝트의 Oracle 버전은 11g이다.
아래는 내가 시도했다가 해당 에러를 만나게 된 쿼리이다.
SELECT 컬럼
FROM 테이블
WHERE 컬럼 = '02'
FETCH FIRST 10 ROWS ONLY;
FETCH FIRST절은 Oracle에서 ROWNUM과 비슷한 결과를 내는 키워드이다.
해당 키워드를 사용하면 결과를 제한할 수 있다.
처음에 해당 쿼리를 사용하고 에러가 나서,
ORDER BY절이 없는 경우 제대로 작동하지 않을 수 있는 가능성이 있기에
ORDER BY절을 추가하고 다시 시도했다.
SELECT 컬럼
FROM 테이블
WHERE 컬럼 = '01'
ORDER BY 컬럼
FETCH FIRST 10 ROWS ONLY;
해당 쿼리는 컬럼의 값이 '01'인 레코드 중 컬럼 기준으로 정렬하여 상위 10개를 반환한다는 의미이다.
그러나 해당 쿼리문을 작성해도 동일한 에러가 났다.
원인은 FETCH FIRST절은 Oracle 12 Client 이상에서 사용 가능한 기능이기 때문이다.
내 Oracle 버전은 12 client이지만, 현재 접속한 Oracle 버전은 11g이기 때문이다.
따라서 나는 FETCH FIRST절을 사용할 수 없는 상황이다.
2. 해결
FETCH FIRST절을 사용할 수 없는 경우, ROWNUM으로 대체하여 사용하면 된다.
Oracle에서 ROWNUM으로 결과 길이를 제한시키는 방법은 아래 포스팅에서 확인하길 바란다.
https://soheepark.tistory.com/173
728x90
반응형
'[Language] > SQL' 카테고리의 다른 글
[MySQL] 스키마, 테이블, 컬럼의 character, collation을 UTF8로 변경하기 (0) | 2024.07.26 |
---|---|
[Oracle] ORA-17800: 읽은 호출에서 -1을 가져왔습니다. (1) | 2024.07.02 |
[Oracle] 결과값 표시 제한 (LIMIT, ROWNUM) (0) | 2024.07.01 |
[Oracle] NVL(컬럼명, '값') (0) | 2024.07.01 |
[Oracle]SQL Error [1401] [22001]: ORA-01401 (0) | 2024.06.21 |