1. 程式人生 > >一條sql插入多行資料mysql和oracle的不同寫法

一條sql插入多行資料mysql和oracle的不同寫法

轉載出處:

由於要將mysql資料庫轉為oracle,mybatis的對映檔案裡面的批量插入用的mysql的多個values的形式,但是換成oracle庫之後sql報錯。所以.oracle並不支援這種一個insert into 多個values的方法

mysql:INSERT INTO users(name, age) VALUES('ccc', 333), ('aaa', 222), ('bbb', 111); 

事實證明mysql的一條sql插入多條資料在oracle中不適用。

oracle插入多條語句:

INSERT ALL INTO tb_red VALUES(1000, 8001, '2016-10-10 10:59:59', 1, 8001, '測試使用者1000', '紅名單0', '男', '膜法學院', '被測') INTO tb_red  VALUES (1001, 8001, '2016-10-10 11:00:00', 2, 8001, '測試使用者1001', '紅名單1', '男', '膜法學院', '被測') INTO tb_red  VALUES (1002, 8001, '2016-10-10 11:00:01', 0, 8001, '測試使用者1002', '紅名單2', '男', '膜法學院', '被測') INTO tb_red  VALUES (1003, 8001, '2016-10-11 10:59:59', 1, 8001, '測試使用者1003', '紅名單3', '男', '膜法學院', '被測') INTO tb_red  VALUES (1004, 8001, '2016-10-11 11:00:00', 2, 8001, '測試使用者1004', '紅名單4', '男', '膜法學院', '被測') INTO tb_red  VALUES (1005, 8001, '2016-10-11 11:00:01', 0, 8001, '測試使用者1005', '紅名單5', '男', '膜法學院', '被測') select 1 from dual;

 

說明:

1.第一句用的是insert all into 不是 insert into

2.最後跟的selecr 1 from dual語句中的dual表可以被替換為任何一個只要不是tb_red的表

3.和mysql的寫法不一樣,多個values之間不用逗號分隔,但是需要加into tablename的形式的語句在每個values前面

4.只適合於Oralce 9i以上版本