Почему мы должны сделать SELECT после «ВСТАВИТЬ ВСЕ»? - PullRequest
6 голосов
/ 01 июля 2010

Как я видел на многих сайтах, если я хочу сделать INSERT ALL, я должен закончить его с SELECT (Like SELECT * FROM dual;)

Почему?

Ответы [ 2 ]

5 голосов
/ 01 июля 2010

Подзапрос является обязательным в соответствии с синтаксисом INSERT ALL (см. http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_9014.htm#i2111652)

. Предложение вставки выполняется для каждой строки, возвращаемой подзапросом (т. Е. Инструкция SELECT). SELECT * FROM dual возвращает одинстрока, поэтому insert_clause (s) выполняется один раз (что полезно, когда вы хотите вставить жестко закодированный набор значений)

0 голосов
/ 01 июля 2010

Как показано в документации 1001 *, синтаксис INSERT ALL ожидает подзапрос: вы не можете иметь INSERT ALL [...] VALUES [...].

Я подозреваю, что SELECT from dual - это способ сделать мульти вставку одной строки в несколько таблиц.

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