Использование ключевых слов "WITH AS" при переносе данных в SQL

Возможно ли сделать это в SQL?

Если я удаляю оператор INSERT, SELECT работает, если у меня есть вставка, Oracle жалуется, что "отсутствует ключевое слово SELECT".

WITH tmpdata AS
(
//SOME arbitrary select statement
)

INSERT INTO myTable (someId, somevalue, someothervalue)
SELECT
 mysequence.nextval,
 tmpData.somevalue,
 tmpData.someothervalue,
FROM
 tmpdata,
 sometabletojoin
WHERE
 tmpdata.somevalue = sometabletojoin.somevaluebutintheothertable

1 ответ

Решение

Это должно работать:

INSERT INTO myTable (someId, somevalue, someothervalue)
WITH tmpdata AS
(
   ...
)
SELECT ...

Объяснение: WITH а также SELECT принадлежат друг другу; они являются частью одного и того же запроса. Поэтому в вашем примере Oracle жалуется на "отсутствующий SELECT", когда он достигает (неожиданного) INSERT после синтаксического анализа предложения WITH.

Другие вопросы по тегам