Использование ключевых слов "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.