9i 버전부터 제공되는 기능으로 source테이블에서 데이터를 추출해 여러 target table로 데이터를 로드하는 방식의 기능을 제공한다.
이것 또한 insert의 서브쿼리 작업으로 ETL작업 중 하나이다.
기존에 데이터를 다음과 같이 입력하였다면...
기초적인 분법은 다음과 같다.
inser all
into temp1_tb(a,b) values (a1,b1)
into temp2_tb(a,c) values (a1,c1)
select a1,b1,c1
from source_tb
기존의 INSERT 서브쿼리와 달리 VALUES를 기술해 줘야 하며 SELECT 문에서는 가져오고자 하는 데이터들을 모두 기술해야한다.
이런 다중 테이블을 통해 우리는 데이터를 입력하기 위해 큰 테이블에 2번 ACCESS해야 할 것을 1번으로 줄일 수 있다.
INSERT ALL 문장에 대해 조건을 추가한 문법이다.
INSERT ALL
WHEN 조건1 then into ... values ...
WHEN 조건2 then into ... values ...
SELECT ...
FROM...;
기본적인 틀은 INSERT ALL과 같지만 WHEN THEN절을 추가하며 조건을 통해 INSERT INTO가 가능하게 하였다.
이때 WHEN절과 WHEN절은 따로 실행된다.
INSERT FIRST
when 조건1 then ... values ...
when 조건2 then ... values ...
else ... values ...
select ...
from...;
조건 INSERT ALL과 문법은 유사하나, IF ELSE문 처럼 처음에 TRUE를 만나게 된다면 이후의 문장에 대해서 처리하지 않는다는 기능이 있다.