ORACLE 多表INSERT

ORACLE9i开始,可以通过 [INSERT ALL/INSERT FIRST] 来执行多表INSERT。

EG:
   INSERT ALL 
            WHEN T.COL1 = 1 AND T.COL2 > 100 THEN --条件子句1
                 INTO TABLE_A
            WHEN T.COL1 = 2 AND T.COL2 > 102 THEN --条件子句2
                 INTO TABLE_B
   SELECT * FROM TEST T
 


分析:INSERT ALL 在执行的时候,会把满足条件子句1的记录INSERT到TABLE_A;
                                     满足条件子句2的记录INSERT到TABLE_B;
SO:既满足条件子句1又满足条件子句2的记录,既要INSERT到TABLE_A,又要INSERT到TABLE_B;
           
   INSERT FIRST 
            WHEN T.COL1 = 1 AND T.COL2 > 100 THEN --条件子句1
                 INTO TABLE_A
            WHEN T.COL1 = 2 AND T.COL2 > 102 THEN --条件子句2
                 INTO TABLE_B
   SELECT * FROM TEST T
 


分析:INSERT FIRST 在执行的时候,如果一条记录满足条件子句1,那么就将该记录INSERT到TABLE_A,然后去校验下一条记录。如果不满足条件子句1,那么再去比较条件子句2,满足条件子句2则INSERT到TABLE_B,不满足则不做处理。
SO: 既满足条件子句1,又满足条件子句2的记录INSERT到TABLE_A.

猜你喜欢

转载自moocherman.iteye.com/blog/1811166