Я пытаюсь сделать ВЫБРАТЬ В, используя Oracle. Мой запрос:
SELECT * INTO new_table FROM old_table;
Но я получаю следующую ошибку:
SQL Error: ORA-00905: missing keyword
00905. 00000 - "missing keyword"
Есть идеи что не так?
Стандартное поведение вышеизложенного должно быть таким, как я изначально думал: однако Oracle реализовал его совершенно иначе на своем собственном диалекте SQL Oracle Docs on Insert ... Выбрать
select into
создание новой таблицы не входит в стандарт. Стандарт SQL для создания таблицы на основе выбора - этоcreate table .. as select ...
. В стандарте SQLSELECT INTO
определено чтение значения столбца в переменную на языке программированияОтветы:
Если NEW_TABLE уже существует, то ...
Если вы хотите создать NEW_TABLE на основе записей в OLD_TABLE ...
Если целью является создание новой, но пустой таблицы, используйте предложение WHERE с условием, которое никогда не может быть истинным:
Помните, что CREATE TABLE ... AS SELECT создает только таблицу с той же проекцией, что и исходная таблица. Новая таблица не имеет ограничений, триггеров или индексов, которые могли бы иметь исходная таблица. Их еще нужно добавить вручную (если они требуются).
источник
select into
используется в pl / sql для установки переменной в значения поля. Вместо этого используйтеисточник
select into
является частью pl / sql. Это язык для написания хранимых процедур и не имеет прямого отношения к стандарту sql. И да, Oracle сделала много вещей, которые никогда не входили в стандарт =)SELECT INTO
это не стандартный SQL. Стандарт определяет толькоcreate table .. as select ..
Использование:
Пример:
Если таблица уже существует:
источник