Oracle SQL вставляет несколько строк и возвращает что-то - PullRequest
4 голосов
/ 28 апреля 2011

В Oracle можно вставить несколько строк, выполнив запрос, подобный

INSERT ALL
   INTO mytable (column1, column2, column3) VALUES ('val1.1', 'val1.2', 'val1.3')
   INTO mytable (column1, column2, column3) VALUES ('val2.1', 'val2.2', 'val2.3')
   INTO mytable (column1, column2, column3) VALUES ('val3.1', 'val3.2', 'val3.3')
SELECT * FROM dual;

. И с подготовленным оператором выполнение одной вставки, подобной этой,

BEGIN INSERT 
   INTO mytable (column1, column2, column3) VALUES (null, 'val1.2', 'val1.3')
RETURNING column1 INTO ?; END;

приведет квозвращает значение column1 (предположим, что существует триггер, присваивающий ему значение перед вставкой).

Есть ли способ, если вообще возможно, объединить оба?Имеется ввиду вставка нескольких значений при одновременном возврате всех значений column1 (результирующий набор) с помощью одного запроса?

1 Ответ

2 голосов
/ 28 апреля 2011

Из документации (как минимум, версия 10g) одно из ограничений на возвращаемое предложение:

Нельзя указать returning_clause для множественной вставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...