[SQL Tricks] 一条SQL语句向一张表里插入多条记录 (Multitable inserts in 9i)

Oracle 9i加入了支持一次向多个表同时插入数据的SQL语句 --- INSERT ALL|FIRST INTO…SELECT…FROM…

 
INSERT ALL|FIRST
   [WHEN condition THEN] INTO target [VALUES]
   [WHEN condition THEN] INTO target [VALUES]
   ...
   [ELSE] INTO target [VALUES]
SELECT ...
FROM   source_query;
 
 
关于 INSERT ALL/FIRST, Adrian Billington在他的文章中有详细介绍。
 

这里主要讲可以用INSERT ALL把如下多条SQL语句放到一条SQL语句中来执行,

 
SQL> INSERT INTO t(id, val) values (1, 'Y'); 
1 row created. 
SQL> INSERT INTO t(id, val) values (2, 'Y'); 
1 row created. 
SQL> INSERT INTO t(id, val) values (3, 'Y'); 
1 row created. 
SQL> INSERT INTO t(id, val) values (4, 'Y'); 
1 row created. 

 

 

用INSERT ALL转换 ===>

 
SQL> INSERT ALL
  2    INTO t(id, val) VALUES(1, 'Y')
  3    INTO t(id, val) VALUES(2, 'Y')
  4    INTO t(id, val) VALUES(3, 'Y')
  5    INTO t(id, val) VALUES(4, 'Y')
  6  SELECT NULL FROM dual;
 
4 rows created.
 
SQL>
原文地址:https://www.cnblogs.com/fangwenyu/p/1639610.html