2009-11-19 3 views
2

SQL에서이를 수행 할 수 있습니까?SQL에서 데이터를 마이그레이션 할 때 "WITH AS"키워드 사용

INSERT 문을 제거하면 삽입 오라클에 "누락 된 SELECT 키워드"라는 문구가 있으면 SELECT 문이 작동합니다.

WITH tmpdata AS 
(
//SOME arbitrary select statement 
) 

INSERT INTO myTable (someId, somevalue, someothervalue) 
SELECT 
mysequence.nextval, 
tmpData.somevalue, 
tmpData.someothervalue, 
FROM 
tmpdata, 
sometabletojoin 
WHERE 
tmpdata.somevalue = sometabletojoin.somevaluebutintheothertable 
+0

대신 "CREATE TABLE something AS"구문을 사용해야합니까? 여기에 보이는 바와 같이 ... http://www.dba-oracle.com/t_sql99_with_clause.htm – benstpierre

+0

나는이 질문을해야한다. - 당신은 SELECT 주위에()를 사용하고 있고, 당신의 질문에서와 같이 {}을 사용하지는 않습니까? – dpbradley

+0

예 {} 대신()을 사용했습니다. – benstpierre

답변

3

이 작동합니다 :

INSERT INTO myTable (someId, somevalue, someothervalue) 
WITH tmpdata AS 
(
    ... 
) 
SELECT ... 

는 설명 : WITHSELECT 함께 속해; 그것들은 같은 쿼리의 일부입니다. 따라서 예제에서 WITH 절을 구문 분석 한 후 (예기치 않은) INSERT에 도달하면 Oracle은 "누락 된 SELECT"에 대해 불평합니다.