2015-12-20 6 views
-2

Что может быть лучшим и наиболее рекомендуемым вариантом для инструкции INSERT ALL, показанной ниже, которая является функциональной в версии Oracle 8i? Очень жаль, что это конкретное утверждение не работает в 8i с его простотой и удобочитаемостью. Было бы здорово, если бы вы могли предоставить некоторые материалы. Спасибо.Множественная вставка строки: лучшая альтернатива для оператора INSERT ALL, работающего на Oracle 8i

ВСТАВИТЬ Высказывание

INSERT ALL 
    INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n) 
    INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n) 
    INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n) 
SELECT * FROM dual; 

Кроме того, было бы лучше, если бы один из ваших рекомендаций не совпадает с запросом, как показано ниже по ряду причин.

insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE) 
     select 8000,0,'Multi 8000',1 from dual 
union all select 8001,0,'Multi 8001',1 from dual 

спасибо!

+1

Почему бы просто не написать три оператора 'insert'? Если он заключен в транзакцию, то вряд ли имеет какое-либо значение для свернутого синтаксиса 'insert all', и его также не нужно больше вводить. Также: почему вы используете версию, которая не поддерживается более десяти лет? –

ответ

2

Если вы хотите вставить эти строки в качестве одной транзакции, сделать просто:

BEGIN 
    SAVEPOINT some_name; 
    INSERT INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n); 
    INSERT INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n); 
    INSERT INTO mytable (column1, column2, column_n) VALUES (expr1, expr2, expr_n); 
EXCEPTION WHEN OTHERS THEN 
    ROLLBACK TO some_name; 
    RAISE; -- reraise current error 
END; 
/

Это имитирует behavoiur из INSERT ALL
INSERT ALL является одной командой, поэтому, когда какая-то ошибка происходит, то все изменения, внесенные эта транзакция откатывается назад (см. Атомность на уровне заявлений здесь: http://docs.oracle.com/cd/E25054_01/server.1111/e25789/transact.htm)

 Смежные вопросы

  • Нет связанных вопросов^_^