1. 程式人生 > 實用技巧 >Oracle 怎麼同時插入多條資料?

Oracle 怎麼同時插入多條資料?

SQL語句向表中插入多個值的話,如果如下語句

INSERT INTO某表 VALUES(各個值),VALUES(各個值),.....;

這樣會報錯的,因為oracle是不支援這種寫法的,如果多個INSERT INTO VALUEES(各個值);這樣以“;”隔開一同執行也是不行的,oracle也是不支援的。

不過MySQL這兩種方式都是支援的。在MySQL中還可以使用如下格式的插入語句:

示例:
insert into persons 
(id_p, lastname , firstName, city )
values
(200,'haha' , 'deng' , 'shenzhen'),
(201,'
haha2' , 'deng' , 'GD'), (202,'haha3' , 'deng' , 'Beijing');

SQLServer也是不支援這兩種寫法的。

ORACLE 的方法:

"INSERT ALL INTO  a表
VALUES(各個值)  
INTO a表 VALUES (其它值) 
INTO a表 VALUES(其它值) .... 再跟一個SELECT 語句"
SELECT 1 FROM DUAL

後邊跟的SELECT語句我們可以從虛擬表裡查如SELECT 1 FROM DUAL。注意後邊跟的SELECT語句可以隨意,不過不是把它SELECT出來的內容插入前邊的表裡,而是起到前邊的多個數據每次插入多少行的作用,這個多少行是和後邊跟的SELECT語句查出來幾條而定的,如後邊的跟的SELECT語句查出了15條記錄,那麼前邊的"INSERT ALL INTOa表 VALUES(各個值1)INTOa表 VALUES (其它值2)INTOa表 VALUES(其它值3)

"就會先插入值1對應的各個欄位插入15條記錄,然後插入值2各個對應的欄位15條記錄,然後插入值3對應的各個欄位15條記錄,也就是說有點按列插入的意思。

我們要的是批量插入多個VALUES這樣的一條記錄,所以後邊的SELECT語句只要能查出一條記錄就行,建議大家後邊用SELECT 1 FROM DUAL

INSERT ALL INTO 表名 VALUES('值1','值2'...) INTO 表名 VALUES('值1','值2'...) SELECT 1 FROM DUAL;