상세 컨텐츠

본문 제목

Oracle INSERT ALL

DataBase/Oracle

by 탑~! 2012. 8. 9. 11:25

본문

Oracle 9i 이상에서 지원 됩니다.

 

-- Unconditional insert into ALL tables                                 
INSERT ALL                                                              
  INTO sal_history VALUES(empid,hiredate,sal)                           
  INTO mgr_history VALUES(empid,mgr,sysdate)                            
SELECT employee_id EMPID, hire_date HIREDATE, salary SAL, manager_id MGR
  FROM employees WHERE employee_id > 200;                               
                                                                        
-- Pivoting insert to split non-relational data                         
INSERT ALL                                                              
  INTO Sales_info VALUES (employee_id,week_id,sales_MON)                
  INTO Sales_info VALUES (employee_id,week_id,sales_TUE)                
  INTO Sales_info VALUES (employee_id,week_id,sales_WED)                
  INTO Sales_info VALUES (employee_id,week_id,sales_THUR)               
  INTO Sales_info VALUES (employee_id,week_id, sales_FRI)               
SELECT EMPLOYEE_ID, week_id, sales_MON, sales_TUE,                      
    sales_WED, sales_THUR,sales_FRI                                     
FROM Sales_source_data;                                                 
                                                                        
-- Conditionally insert into ALL tables                                 
INSERT ALL                                                              
  WHEN SAL>10000 THEN                                                   
    INTO sal_history VALUES(EMPID,HIREDATE,SAL)                         
  WHEN MGR>200 THEN                                                     
    INTO mgr_history VALUES(EMPID,MGR,SYSDATE)                          
SELECT employee_id EMPID, hire_date HIREDATE, salary SAL, manager_id MGR
  FROM employees WHERE employee_id > 200;                               
                                                                        
-- Insert into the FIRST table with a matching condition                
INSERT FIRST                                                            
  WHEN SAL > 25000  THEN                                                
    INTO special_sal VALUES(DEPTID,SAL)                                 
  WHEN HIREDATE like ('%00%') THEN                                      
    INTO hiredate_history_00 VALUES(DEPTID,HIREDATE)                    
  WHEN HIREDATE like ('%99%') THEN                                      
    INTO hiredate_history_99 VALUES(DEPTID,HIREDATE)                    
  ELSE                                                                  
    INTO hiredate_history VALUES(DEPTID, HIREDATE)                      
SELECT department_id DEPTID, SUM(salary) SAL,                           
    MAX(hire_date) HIREDATE                                             
  FROM employees GROUP BY department_id;        

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

ORA-02020: too many database links in use 에러 조치 방법  (0) 2012.08.23
Oracle Lock 확인  (0) 2012.08.11
Oracle Cursor 예제 (Loop Fetch)  (0) 2012.08.09
Oracle Cursor (for Loop)  (0) 2012.08.09
Oracle Log  (0) 2012.08.09

관련글 더보기