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>