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/
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
//