INSERT..SELECT в Oracle всегда завершается с ошибкой "команда SQL не завершена должным образом"

Я хорошо знаю SQL-Server и другие формы SQL, но пытаюсь изучить Oracle SQL. По какой-то причине я не могу получить даже самую простую форму INSERT INTO .. SELECT .. работать, он всегда терпит неудачу с " команда SQL не завершена должным образом. "

Вот мой текущий пример:

CREATE TABLE table1 (year INT, id INT, dat DATE, categ VARCHAR(99));

INSERT INTO table1
(year, id, dat, categ)
select year, id, dat, categ from table1 where id=5000 and year=2013;

Вот SqlFiddle: http://sqlfiddle.com/

Я не могу понять, что здесь не так. Я проверил около дюжины связанных с этим вопросов здесь, в SO, и более десятка в Google, но все ответы либо не применяются, либо не работают. Я также попробовал около миллиона вариантов команд выше, кажется, ничего не работает.

Любая помощь с благодарностью.


FWIW, теперь я думаю, что это просто проблема SQLFiddle, как утверждали многие.

Пользователь Oracle, который сообщил мне о проблеме с моим кодом, конечно, использовал полный оператор SQL, прежде чем я сократил его, чтобы попытаться изолировать проблему. В этом запросе была совершенно другая проблема, которая просто сообщала об одной и той же ошибке в SQLFiddle. В частности, его проблема заключалась в том, что я использовал As для псевдонимов таблиц, которые, по-видимому, недопустимы в Oracle (или, возможно, только в запросе, который я написал).

В любом случае, искреннее спасибо всем, кто пытался мне помочь.

3 ответа

Решение
CREATE TABLE table1 (year INT, id INT, dat DATE, categ VARCHAR(99))
/

INSERT INTO table1
(year, id, dat, categ)
select year, id, dat, categ from table1 where id=5000 and year=2013

Это работает, то есть, если вы вставляете оба оператора в левом (схема) окне в скрипте SQL. Я не думаю, что SQL Fiddle позволяет insert..select в окне SQL вообще.

Я не знаю, почему вы столкнулись с этой проблемой, но с синтаксисом проблем нет

Я думаю, что это просто, как вы выполняете запрос на скрипте, я просто изменил поток выполнения и переместил оператор вставки в раздел построения схемы, тогда все работало нормально, не меняя слова (но я вставил некоторые примеры данных, чтобы показать точную работу)

посмотреть это http://sqlfiddle.com/

SQL Fiddle

CREATE TABLE table1 (year INT, id INT, dat DATE, categ VARCHAR(99))
//

INSERT INTO table1 (year, id, dat, categ)
SELECT year, id, dat, categ 
FROM table1 
WHERE id = 5000 AND year=2013
//
Другие вопросы по тегам