Вставка 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 в одном выражении 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. - 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