[Oracle] 同時新增資料到多張資料表中
一,語法
INSERT ALL | FIRST
INSERT_INTO_CLAUSE [VALUE_CLAUSE] SUBQUERY
二,範例
INSERT ALL WHEN C1 = 'TEST1' THEN INTO TEST1 WHEN C1 = 'TEST2' THEN INTO TEST2 ELSE INTO TEST3 SELECT * FROM JOB;
三,實作結果
--建立四張測試用資料表 CREATE TABLE TEST1 (C1 VARCHAR2(20)); CREATE TABLE TEST2 (C1 VARCHAR2(20)); CREATE TABLE TEST3 (C1 VARCHAR2(20)); CREATE TABLE JOB (C1 VARCHAR2(20)); --先將測試用資料新增到JOB資料表中 BEGIN FOR I IN 1..100 LOOP INSERT INTO job VALUES('TEST1'); END LOOP; FOR I IN 1..80 LOOP INSERT INTO job VALUES('TEST2'); END LOOP; FOR I IN 1..60 LOOP INSERT INTO job VALUES('TEST3'); END LOOP; END; --開始測試多資料表新增 INSERT ALL WHEN C1 = 'TEST1' THEN INTO TEST1 WHEN C1 = 'TEST2' THEN INTO TEST2 ELSE INTO TEST3 SELECT * FROM JOB; --查看各資料表資料筆數 SELECT (SELECT COUNT(*) FROM TEST1) AS TEST1 ,(SELECT COUNT(*) FROM TEST2) AS TEST2 ,(SELECT COUNT(*) FROM TEST3) AS TEST3 FROM DUAL;
PS:從Oracle 9i之後的版本才可以使用。