신기한 기법이었다. 나중에 꼭 제대로 써먹어야겠다 싶었다.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--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 |