หาวิธี insert ข้อมูลทีละหลายๆ rows พร้อมกันใน Oracle ตั้งนานไปเจอมาที่นี่ ก็เลยเอามาเก็บไว้ซะเลย จะได้จดและจำและให้เพื่อนๆ ได้ดูด้วยครับ ซึ่งตอนแรกผมก็นึกว่ามันจะเป็นเหมือน MySQL คือ
insert into mytable(field1,fied2) values ('data11','data12'),('data21','data22'),('data31','data32');
แต่มันใช้ไม่ได้นะครับ Syntax ของ Oracle จะประมาณนี้ครับ
insert all into mytable(field1,fied2) values ('data11','data12') into mytable(field1,fied2) values ('data21','data22') into mytable(field1,fied2) values ('data31','data32') select 1 from dual;
ตัวอย่างที่ 1: ถ้าต้องการ insert ข้อมูล 3 rows ใน table searchengine สามารถทำไ้ด้ดังนี้ครับ
insert all into searchengine(id,name) values(1,'google') into searchengine(id,name) values(2,'bing') into searchengine(id,name) values(3,'yahoo') select 1 from dual;
ตัวอย่างที่ 2: เราสามารถ insert ทีละหลาย rows หลาย table ได้ด้วยนะครับ
insert all into searchengine(id,name) values(1,'google') into searchengine(id,name) values(2,'bing') into member(id,firstname,lastname) values(123,'firstname','lastname') select 1 from dual;
ซึ่งตัวอย่างที่ 2 จะเป็นการ insert ข้อมูล 2 rows เข้าไปที่ table searchengine และ insert ข้อมูล 1 row เข้าไปที่ table member ครับ