SQL แทรกเข้าไปใน - หลายแถว - Oracle

ฉันมีคำถามที่ฉันพยายามแทรกข้อมูลลงในฐานข้อมูลที่ฉันสร้างขึ้นโดยใช้คำสั่ง SQL เช่น

CREATE TABLE CUSTOMER
(
   REFERENCE NUMBER(5) PRIMARY KEY,
   COMPANY VARCHAR2(20),
   ADDRESS VARCHAR2(30),
   TELEPHONE NUMBER(12),
   CONTACT VARCHAR2(20)
);

ฉันกำลังพยายามแทรกข้อมูลโดยใช้หลายแถว

ฉันค่อนข้างแน่ใจว่าไวยากรณ์นี้ถูกต้อง แต่กลับแสดงข้อผิดพลาด "ORA-00911: อักขระที่ไม่ถูกต้อง"

นี่คือสิ่งที่ฉันกำลังแทรก:

insert into customer values (130,'Affright Retail','18 Redingote Dell Tonbridge TN46 7JF',01208830667,'John Elrick');

insert into customer values (149,'Askew Inc.','37 Unmediated Parkway Walsall UB20 9WA',01299818072,'Sean Walker');

person user1028145    schedule 03.11.2011    source แหล่งที่มา
comment
ใช่ เราได้ลองแล้ว แต่เราสามารถจัดการเพื่อประมวลผลได้ครั้งละหนึ่งบรรทัดและทำงานได้ดี แต่ถ้าเราลองหลายบรรทัด มันจะทำให้เราเกิดข้อผิดพลาด...   -  person user1028145    schedule 03.11.2011
comment
ลองใช้วิธีนี้: แทรกลงในค่าของลูกค้า (130,'Affright Retail','18 Redingote Dell Tonbridge TN46 7JF',01208830667,'John Elrick'), ค่า (149,'Askew Inc.','37 Unmediated Parkway Walsall UB20 9WA ',01299818072,'ฌอน วอล์คเกอร์');   -  person Aurelio De Rosa    schedule 03.11.2011
comment
@AurelioDeRosa - คุณไม่สามารถระบุ VALUES clause หลายรายการในคำสั่ง INSERT เดียวใน Oracle   -  person Justin Cave    schedule 03.11.2011
comment
เพิ่งลอง นี่เป็นข้อผิดพลาดที่เราได้รับ ORA-00933: คำสั่ง SQL ไม่สิ้นสุดอย่างถูกต้อง - ขอบคุณที่ลอง   -  person user1028145    schedule 03.11.2011
comment
@JustinCave คุณมีวิธีแก้ปัญหาให้เราแทรกหลายแถวหรือไม่?   -  person user1028145    schedule 03.11.2011
comment
@ user1028145 - ใช่ ฉันโพสต์สองวิธีด้านล่าง   -  person Justin Cave    schedule 03.11.2011


คำตอบ (2)


คุณใช้แอปพลิเคชันใดในการรันคำสั่งเหล่านี้

หากคุณกำลังพยายามเรียกใช้หลายคำสั่งจากแอปพลิเคชันที่กำหนดเอง คุณอาจต้องการสร้างบล็อก PL/SQL เดียว

BEGIN
  INSERT INTO customer( customer_id, 
                        customer_name, 
                        customer_address, 
                        customer_code, 
                        customer_contact )
    VALUES( 130,
            'Affright Retail',
            '18 Redingote Dell Tonbridge TN46 7JF',
            01208830667,
            'John Elrick');

  INSERT INTO customer( customer_id, 
                        customer_name, 
                        customer_address, 
                        customer_code, 
                        customer_contact )
    VALUES( 149,
            'Askew Inc.',
            '37 Unmediated Parkway Walsall UB20 9WA',
            01299818072,
            'Sean Walker' );
END;

หากคุณใช้งานสิ่งเหล่านี้ใน SQL*Plus หรือ PL/SQL IDE บางตัว คุณอาจจำเป็นต้องใช้ตัวคั่นเฉพาะเครื่องมือ (ใน SQL*Plus นั่นจะเป็น / ในบรรทัดแยกต่างหาก)

person Justin Cave    schedule 03.11.2011
comment
เรากำลังสร้างมันโดยใช้ Oracle 10g Express Edition, SQL Command - person user1028145; 03.11.2011
comment
ขอบคุณ เราต้องการคำสั่ง Begin และ End ที่เกี่ยวข้อง - person user1028145; 03.11.2011

ลองแทรกแต่ละรายการทีละรายการเพื่อให้แน่ใจว่าทั้งสองรายการถูกต้อง หากดูเหมือนว่าทั้งคู่ทำงานได้ดีแยกกัน ให้ลองใส่เครื่องหมายสแลช ("/") หลังการแทรกแต่ละครั้งและนั่นจะช่วยดูแลมัน ดูด้านล่าง

insert into customer values (130,'Affright Retail','18 Redingote Dell Tonbridge TN46 7JF',01208830667,'John Elrick');
/
insert into customer values (149,'Askew Inc.','37 Unmediated Parkway Walsall UB20 9WA',01299818072,'Sean Walker');
/
person Ben    schedule 03.11.2011