본문 바로가기

IT관련

오라클 에러 (ORA-00998: must name this expression with a column alias)

Oracle DB에서 CTAS(Create Table As Select) 구문으로 임시데이터를 만들때 아주 흔하게 만나는 에러가 ORA-00998 입니다.

아래와 같이 connect by 문으로 간단히 테스트 데이터를 1000건 만들고자 할때, CTAS 구문을 사용할 수 있습니다.


SQL> create table TEST33
as
select level + 1000
from dual
connect by level <= 1000;  2    3    4    5
select level + 1000
             *
ERROR at line 3:
ORA-00998: must name this expression with a column alias

 

select 결과로 나오는 데이터를 가지고 바로 TEST33 테이블을 만드는 것인데, 이때 컬럼명을 따로 지정하지 않았기 때문에 select 로 나오는 컬럼명이 TEST33 테이블의 컬럼명으로 사용됩니다.

그런데, 컬럼명이 "level + 1000" 으로 나오면, 이걸 컬럼명으로 사용할 수 없게 되기 때문에 에러가 나는 것입니다.

 

아래처럼, "as col33" 과 같이 컬럼명을 지정해주면 됩니다.


SQL> create table TEST33
as
select level + 1000 as col33
from dual
connect by level <= 1000;  2    3    4    5

Table created.

 

CTAS 구문으로 새로 생성되는 TEST33 테이블은 col33 컬럼명을 가지게 됩니다.