ВЫБРАТЬ В, используя Oracle

99

Я пытаюсь сделать SELECT INTO с помощью Oracle. Мой запрос:

SELECT * INTO new_table FROM old_table;

Но я получаю следующую ошибку:

SQL Error: ORA-00905: missing keyword
00905. 00000 -  "missing keyword"

Любые идеи, что неправильно?


Стандартное поведение выше должно быть таким, как я изначально думал: Однако Oracle внедрил это совершенно по-другому в своем собственном диалекте SQL Oracle Docs on Insert... Выбрать

  • 3
    select into чтобы создать новую таблицу не является частью стандарта. Стандарт SQL для создания таблицы на основе выбора - create table .. as select ... В стандарте SQL SELECT INTO определен для чтения значения столбца в переменную на языке программирования.
Теги:
ora-00905

3 ответа

218
Лучший ответ

Если NEW_TABLE уже существует, то...

insert into new_table select * from old_table
/

Если вы хотите создать NEW_TABLE на основе записей в OLD_TABLE...

create table new_table as select * from old_table
/
  • 15
    +1 @ Роберт: Плюс, если вы просто хотите скопировать схему old_table, используйте отрицательное предложение where, как, например: create new_table as select * from old_table WHERE 1 = 2.
26

select into используется в pl/sql для установки переменной в значения полей. Вместо этого используйте

create table new_table as select * from old_table
  • 0
    Я, хотя SELECT INTO был частью стандарта. Оракул делал здесь что-то странное или это никогда не было частью стандарта?
  • 3
    select into является частью пл / sql. Это язык для написания хранимых процедур и не имеет прямого отношения к стандарту SQL. И да, Oracle сделал много вещей, которые никогда не были частью стандарта =)
Показать ещё 3 комментария
1

Использование:

create table new_table_name 
as
select column_name,[more columns] from Existed_table;

Пример:

create table dept
as
select empno, ename from emp;

Если таблица уже существует:

insert into new_tablename select columns_list from Existed_table;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню