DB/Oracle

다중 Insert 쿼리 문 예

seungdols 2015. 10. 7. 21:51


신기한 기법이었다. 나중에 꼭 제대로 써먹어야겠다 싶었다.



--INSERT ALL | FIRST
-- WHEN 조건1 THEN
-- INTO [스키마].테이블명 (컬럼1....) VALUES ( 1 , 2, 3...)
-- WHEN 조건2 THEN
-- INTO [스키마].테이블명 (컬럼1....) VALUES ( 1 , 2, 3...)
-- ELSE
-- INTO [스키마].테이블명 (컬럼1....) VALUES ( 1 , 2, 3...)
--SELECT ... ;
--다중 INSERT문
CREATE TABLE ex7_3
(
emp_id NUMBER,
emp_name VARCHAR2(100)
);
CREATE TABLE ex7_4
(
emp_id NUMBER,
emp_name VARCHAR2(100)
);
INSERT ALL
INTO ex7_3 VALUES (103,'SEUNGDOLS')
INTO ex7_3 VALUES (104,'SANGDOLS')
SELECT *
FROM DUAL;
--동시에 여러 테이블도 삽입 가능함.
INSERT ALL
INTO ex7_3 VALUES (106,'MIND')
INTO ex7_4 VALUES (114,'HEART')
SELECT *
FROM DUAL;
TRUNCATE TABLE ex7_3;
TRUNCATE TABLE ex7_4;
--조건식 사용
INSERT ALL
WHEN department_id = 30 THEN
INTO ex7_3 VALUES (employee_id, emp_name)
WHEN department_id = 90 THEN
INTO ex7_4 VALUES (employee_id, emp_name)
SELECT department_id
,employee_id
,emp_name
FROM employees;
CREATE TABLE ex7_5
(
emp_id NUMBER,
emp_name VARCHAR2(100)
);
INSERT ALL
WHEN department_id = 30 THEN
INTO ex7_3 VALUES (employee_id, emp_name)
WHEN department_id = 90 THEN
INTO ex7_4 VALUES (employee_id, emp_name)
ELSE
INTO ex7_5 VALUES (employee_id, emp_name)
SELECT department_id
,employee_id
,emp_name
FROM employees;
-- INSERT ALL 대신 FIRST를 사용할 경우 WHEN 조건에 맞으면 처리하는 방식의 차이
-- 첫 번째가 TRUE가 되면, 그 해당하는 INTO를 실행하고 끝나버린다.
반응형

'DB > Oracle' 카테고리의 다른 글

PL/SQL의 시작  (0) 2015.10.07
window절을 이용한 쿼리 연습  (0) 2015.10.07
oracle 분석 함수 이용 예  (0) 2015.10.07
WITH절 이용한 쿼리 및 순환쿼리  (0) 2015.10.07
계층형 쿼리 관련  (0) 2015.10.07